SergeyO7 commited on
Commit
99a8b0b
·
verified ·
1 Parent(s): ba51f14

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -32
app.py CHANGED
@@ -24,6 +24,7 @@ PROMPT_TEMPLATE = """
24
 
25
  # Инициализация базы данных Chroma один раз при запуске
26
  def initialize_chroma():
 
27
  if not os.path.exists(CHROMA_PATH):
28
  generate_data_store()
29
  embeddings = HuggingFaceEmbeddings(
@@ -38,37 +39,6 @@ def initialize_chroma():
38
  )
39
  return db
40
 
41
- def main():
42
- # Создаем папки при необходимости
43
- os.makedirs("/tmp/model_cache", exist_ok=True)
44
- os.makedirs("/tmp/chroma", exist_ok=True)
45
-
46
- # Генерируем или загружаем базу данных Chroma один раз
47
- if not os.path.exists(CHROMA_PATH):
48
- generate_data_store()
49
-
50
- # Инициализация эмбеддингов
51
- embeddings = HuggingFaceEmbeddings(
52
- model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
53
- cache_folder="model_cache"
54
- )
55
-
56
- # Загрузка векторной БД
57
- db = Chroma(
58
- persist_directory=CHROMA_PATH,
59
- embedding_function=embeddings
60
- )
61
-
62
- print("Чат готов. Введите ваш вопрос или 'exit' для выхода.")
63
-
64
- # Интерактивный цикл чата
65
- while True:
66
- query_text = input("Вы: ")
67
- if query_text.lower() in ["exit", "quit"]:
68
- print("Выход из чата.")
69
- break
70
- process_query(query_text, db)
71
-
72
 
73
  def generate_data_store():
74
  documents = load_documents()
@@ -96,6 +66,7 @@ def split_text(documents: list[Document]):
96
  print(f"Разделено {len(documents)} документов на {len(chunks)} частей.")
97
  return chunks
98
 
 
99
  def save_to_chroma(chunks: list[Document]):
100
  # Очищаем базу данных перед сохранением
101
  if os.path.exists(CHROMA_PATH):
@@ -117,6 +88,8 @@ def save_to_chroma(chunks: list[Document]):
117
  )
118
  print(f"Сохранено {len(chunks)} частей в {CHROMA_PATH}.")
119
 
 
 
120
  # Обработка запроса пользователя
121
  def process_query(query_text: str, db):
122
  results = db.similarity_search_with_relevance_scores(query_text, k=3)
@@ -139,6 +112,10 @@ def chat_interface(query_text):
139
  response, sources = process_query(query_text, db)
140
  return f"Ответ: {response}\n\nИсточники: {', '.join(sources) if sources else 'Нет источников'}"
141
 
 
 
 
 
142
  # Создание и запуск интерфейса Gradio
143
  interface = gr.Interface(
144
  fn=chat_interface,
@@ -149,4 +126,4 @@ interface = gr.Interface(
149
  )
150
 
151
  if __name__ == "__main__":
152
- main()
 
24
 
25
  # Инициализация базы данных Chroma один раз при запуске
26
  def initialize_chroma():
27
+
28
  if not os.path.exists(CHROMA_PATH):
29
  generate_data_store()
30
  embeddings = HuggingFaceEmbeddings(
 
39
  )
40
  return db
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
  def generate_data_store():
44
  documents = load_documents()
 
66
  print(f"Разделено {len(documents)} документов на {len(chunks)} частей.")
67
  return chunks
68
 
69
+
70
  def save_to_chroma(chunks: list[Document]):
71
  # Очищаем базу данных перед сохранением
72
  if os.path.exists(CHROMA_PATH):
 
88
  )
89
  print(f"Сохранено {len(chunks)} частей в {CHROMA_PATH}.")
90
 
91
+
92
+
93
  # Обработка запроса пользователя
94
  def process_query(query_text: str, db):
95
  results = db.similarity_search_with_relevance_scores(query_text, k=3)
 
112
  response, sources = process_query(query_text, db)
113
  return f"Ответ: {response}\n\nИсточники: {', '.join(sources) if sources else 'Нет источников'}"
114
 
115
+ # Создаем папки при необходимости
116
+ os.makedirs("/tmp/model_cache", exist_ok=True)
117
+ os.makedirs("/tmp/chroma", exist_ok=True)
118
+
119
  # Создание и запуск интерфейса Gradio
120
  interface = gr.Interface(
121
  fn=chat_interface,
 
126
  )
127
 
128
  if __name__ == "__main__":
129
+ interface.launch()