Uniaff commited on
Commit
9fc004d
·
verified ·
1 Parent(s): 3dff5c6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -31
app.py CHANGED
@@ -9,20 +9,19 @@ from langchain.prompts import ChatPromptTemplate
9
  from langchain_community.llms import Ollama
10
  from datetime import datetime
11
 
12
- from func_ai import classify_comment, retrieve_from_vdb, analyze_sentiment, log_message as ai_log
13
  from func_facebook import (
14
  get_page_id,
15
  has_page_replied,
16
  get_unanswered_comments,
17
  reply_comment,
18
  hide_negative_comments,
19
- log_message as fb_log
20
  )
21
 
22
- # Инициализация переменных окружения
23
  VECTOR_API_URL = os.getenv('API_URL')
24
 
25
- def log_message(message):
26
  timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
27
  print(f"[{timestamp}] {message}")
28
 
@@ -46,21 +45,21 @@ Question: {input}
46
  """
47
 
48
  def delete_faiss_index():
49
- log_message("Удаляем FAISS индекс.")
50
  try:
51
  response = requests.delete(f"{VECTOR_API_URL}/delete_index/")
52
  if response.status_code == 200:
53
- log_message("FAISS индекс успешно удален.")
54
  return "FAISS успешно удален."
55
  else:
56
- log_message(f"Ошибка при удалении FAISS индекса: {response.json().get('detail')}")
57
  return {"status": "error", "message": response.json().get("detail", "Ошибка при удалении FAISS индекса.")}
58
  except Exception as e:
59
- log_message(f"Ошибка при удалении FAISS индекса: {e}")
60
  return {"status": "error", "message": str(e)}
61
 
62
  def upload_file_vdb(file):
63
- log_message("Загружаем файл")
64
  API_URL = f"{VECTOR_API_URL}/upload/"
65
 
66
  file_path = file.name # Получаем имя файла
@@ -71,7 +70,7 @@ def upload_file_vdb(file):
71
  try:
72
  with open(temp_path, 'wb') as f:
73
  f.write(file.read())
74
- log_message(f"Файл сохранен во временное место: {temp_path}")
75
 
76
  # Отправляем файл в векторную базу данных
77
  with open(temp_path, 'rb') as f:
@@ -80,60 +79,60 @@ def upload_file_vdb(file):
80
 
81
  # Удаляем временный файл
82
  os.remove(temp_path)
83
- log_message(f"Временный файл {temp_path} удален.")
84
 
85
  # Обработка ответа от сервера
86
  if response.status_code == 200:
87
- log_message("Файл успешно загружен.")
88
  return "Файл успешно загружен."
89
  else:
90
- log_message(f"Ошибка при загрузке файла: {response.json().get('detail')}")
91
  return f"Ошибка: {response.json().get('detail')}"
92
  except Exception as e:
93
- log_message(f"Ошибка при загрузке файла: {e}")
94
  return f"Ошибка: {str(e)}"
95
 
96
  def generate_response(user_query, llm):
97
- log_message(f"Генерация ответа на запрос: {user_query}")
98
  prompt = ChatPromptTemplate.from_template(template)
99
 
100
  documents = retrieve_from_vdb(user_query)
101
  context = "\n".join(documents)
102
 
103
- log_message(f"Контекст из базы данных: {context[:100]}...")
104
  full_prompt = prompt.format(context=context, input=user_query)
105
 
106
  try:
107
  response = llm.invoke(full_prompt)
108
- log_message(f"Сгенерированный ответ: {response}")
109
  return response
110
  except Exception as e:
111
- log_message(f"Ошибка при генерации ответа: {e}")
112
  return "Извините, возникла ошибка при обработке вашего запроса."
113
 
114
  def process_comments(ACCESS_TOKEN):
115
- log_message("Начинаем процесс скрытия отрицательных комментариев.")
116
  hidden_comments_data = hide_negative_comments(ACCESS_TOKEN)
117
- log_message(f"Количество постов с скрытыми комментариями: {len(hidden_comments_data)}")
118
 
119
- log_message("Получение неотвеченных комментариев.")
120
  posts_with_unanswered_comments = get_unanswered_comments(ACCESS_TOKEN)
121
 
122
  page_id = get_page_id(ACCESS_TOKEN)
123
  if not page_id:
124
- log_message("Не удалось получить ID страницы.")
125
  return {"status": "failed", "reason": "Не удалось получить ID страницы."}
126
 
127
- log_message(f"ID страницы: {page_id}")
128
 
129
  processed_posts = []
130
 
131
  # Инициализируем модель Ollama
132
  try:
133
  llm = Ollama(model="llama3.1")
134
- log_message("Модель Ollama 'llama3.1' инициализирована.")
135
  except Exception as e:
136
- log_message(f"Ошибка инициализации модели Ollama: {e}")
137
  return {"status": "failed", "reason": "Ошибка инициализации модели AI."}
138
 
139
  for post_data in posts_with_unanswered_comments:
@@ -145,12 +144,12 @@ def process_comments(ACCESS_TOKEN):
145
 
146
  for comment in unanswered_comments:
147
  message = comment['message']
148
- log_message(f"Обработка комментария: {message}")
149
  classification = classify_comment(message)
150
- log_message(f"Классификация комментария: {classification}")
151
  if classification == "interrogative":
152
  response_message = generate_response(message, llm)
153
- log_message(f"Ответ на комментарий: {response_message}")
154
  success = reply_comment(comment_id=comment['id'], message=response_message, token=ACCESS_TOKEN)
155
  if success:
156
  post_replies.append({
@@ -171,9 +170,6 @@ def process_comments(ACCESS_TOKEN):
171
  "posts": processed_posts
172
  }
173
 
174
- def generate_response_interface(user_query, llm):
175
- return generate_response(user_query, llm)
176
-
177
  # Создание интерфейса Gradio
178
  with gr.Blocks() as demo:
179
  with gr.Tab("Главная страница"):
@@ -197,4 +193,5 @@ if __name__ == "__main__":
197
  debug=True,
198
  server_port=7860,
199
  server_name="0.0.0.0",
 
200
  )
 
9
  from langchain_community.llms import Ollama
10
  from datetime import datetime
11
 
12
+ from func_ai import classify_comment, retrieve_from_vdb, analyze_sentiment
13
  from func_facebook import (
14
  get_page_id,
15
  has_page_replied,
16
  get_unanswered_comments,
17
  reply_comment,
18
  hide_negative_comments,
19
+ log_message
20
  )
21
 
 
22
  VECTOR_API_URL = os.getenv('API_URL')
23
 
24
+ def log_message_app(message):
25
  timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
26
  print(f"[{timestamp}] {message}")
27
 
 
45
  """
46
 
47
  def delete_faiss_index():
48
+ log_message_app("Удаляем FAISS индекс.")
49
  try:
50
  response = requests.delete(f"{VECTOR_API_URL}/delete_index/")
51
  if response.status_code == 200:
52
+ log_message_app("FAISS индекс успешно удален.")
53
  return "FAISS успешно удален."
54
  else:
55
+ log_message_app(f"Ошибка при удалении FAISS индекса: {response.json().get('detail')}")
56
  return {"status": "error", "message": response.json().get("detail", "Ошибка при удалении FAISS индекса.")}
57
  except Exception as e:
58
+ log_message_app(f"Ошибка при удалении FAISS индекса: {e}")
59
  return {"status": "error", "message": str(e)}
60
 
61
  def upload_file_vdb(file):
62
+ log_message_app("Загружаем файл")
63
  API_URL = f"{VECTOR_API_URL}/upload/"
64
 
65
  file_path = file.name # Получаем имя файла
 
70
  try:
71
  with open(temp_path, 'wb') as f:
72
  f.write(file.read())
73
+ log_message_app(f"Файл сохранен во временное место: {temp_path}")
74
 
75
  # Отправляем файл в векторную базу данных
76
  with open(temp_path, 'rb') as f:
 
79
 
80
  # Удаляем временный файл
81
  os.remove(temp_path)
82
+ log_message_app(f"Временный файл {temp_path} удален.")
83
 
84
  # Обработка ответа от сервера
85
  if response.status_code == 200:
86
+ log_message_app("Файл успешно загружен.")
87
  return "Файл успешно загружен."
88
  else:
89
+ log_message_app(f"Ошибка при загрузке файла: {response.json().get('detail')}")
90
  return f"Ошибка: {response.json().get('detail')}"
91
  except Exception as e:
92
+ log_message_app(f"Ошибка при загрузке файла: {e}")
93
  return f"Ошибка: {str(e)}"
94
 
95
  def generate_response(user_query, llm):
96
+ log_message_app(f"Генерация ответа на запрос: {user_query}")
97
  prompt = ChatPromptTemplate.from_template(template)
98
 
99
  documents = retrieve_from_vdb(user_query)
100
  context = "\n".join(documents)
101
 
102
+ log_message_app(f"Контекст из базы данных: {context[:100]}...")
103
  full_prompt = prompt.format(context=context, input=user_query)
104
 
105
  try:
106
  response = llm.invoke(full_prompt)
107
+ log_message_app(f"Сгенерированный ответ: {response}")
108
  return response
109
  except Exception as e:
110
+ log_message_app(f"Ошибка при генерации ответа: {e}")
111
  return "Извините, возникла ошибка при обработке вашего запроса."
112
 
113
  def process_comments(ACCESS_TOKEN):
114
+ log_message_app("Начинаем процесс скрытия отрицательных комментариев.")
115
  hidden_comments_data = hide_negative_comments(ACCESS_TOKEN)
116
+ log_message_app(f"Количество постов с скрытыми комментариями: {len(hidden_comments_data)}")
117
 
118
+ log_message_app("Получение неотвеченных комментариев.")
119
  posts_with_unanswered_comments = get_unanswered_comments(ACCESS_TOKEN)
120
 
121
  page_id = get_page_id(ACCESS_TOKEN)
122
  if not page_id:
123
+ log_message_app("Не удалось получить ID страницы.")
124
  return {"status": "failed", "reason": "Не удалось получить ID страницы."}
125
 
126
+ log_message_app(f"ID страницы: {page_id}")
127
 
128
  processed_posts = []
129
 
130
  # Инициализируем модель Ollama
131
  try:
132
  llm = Ollama(model="llama3.1")
133
+ log_message_app("Модель Ollama 'llama3.1' инициализирована.")
134
  except Exception as e:
135
+ log_message_app(f"Ошибка инициализации модели Ollama: {e}")
136
  return {"status": "failed", "reason": "Ошибка инициализации модели AI."}
137
 
138
  for post_data in posts_with_unanswered_comments:
 
144
 
145
  for comment in unanswered_comments:
146
  message = comment['message']
147
+ log_message_app(f"Обработка комментария: {message}")
148
  classification = classify_comment(message)
149
+ log_message_app(f"Классификация комментария: {classification}")
150
  if classification == "interrogative":
151
  response_message = generate_response(message, llm)
152
+ log_message_app(f"Ответ на комментарий: {response_message}")
153
  success = reply_comment(comment_id=comment['id'], message=response_message, token=ACCESS_TOKEN)
154
  if success:
155
  post_replies.append({
 
170
  "posts": processed_posts
171
  }
172
 
 
 
 
173
  # Создание интерфейса Gradio
174
  with gr.Blocks() as demo:
175
  with gr.Tab("Главная страница"):
 
193
  debug=True,
194
  server_port=7860,
195
  server_name="0.0.0.0",
196
+ share=True # Установите share=True для публичной ссылки, если необходимо
197
  )