Salmetov commited on
Commit
d7309dd
·
verified ·
1 Parent(s): 1d11026

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -68
app.py CHANGED
@@ -3,37 +3,34 @@ from huggingface_hub import InferenceClient
3
  import gspread
4
  from google.oauth2.service_account import Credentials
5
 
6
- # Подключение к модели Zephyr-7b-beta через Inference API
7
- client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
8
-
9
- # Подключение Google Sheets
10
  SERVICE_ACCOUNT_FILE = "sheet-integration-agent@bold-physics-445007-g4.iam.gserviceaccount.com.json"
11
- SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
12
- credentials = Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
13
- gspread_client = gspread.authorize(credentials)
14
- spreadsheet = gspread_client.open_by_key("1LHgb4eYDM2ImFY3e3h4kPUnDh6oRHpVz2PA29lQ3Xxg")
15
  worksheet = spreadsheet.sheet1
16
 
17
- # Функция для поиска данных в Google Sheets
 
 
 
18
  def get_apartment_data(query):
19
- try:
20
- rows = worksheet.get_all_records()
21
- results = []
22
- for row in rows:
23
- if query.lower() in row["district"].lower() or query.lower() in row["developer"].lower():
24
- results.append({
25
- "district": row["district"],
26
- "developer": row["developer"],
27
- "project_class": row["project_class"],
28
- "apt_area": row["apt_area"]
29
- })
30
- return results
31
- except Exception as e:
32
- print(f"Ошибка при работе с Google Sheets: {e}")
33
- return []
34
 
35
- # Функция для обработки запросов и ответов
36
- def respond(message, history, system_message, max_tokens, temperature, top_p):
37
  print("Получен запрос:", message)
38
  print("История общения:", history)
39
 
@@ -41,61 +38,39 @@ def respond(message, history, system_message, max_tokens, temperature, top_p):
41
  history = []
42
 
43
  try:
 
44
  if "район" in message.lower() or "застройщик" in message.lower():
45
  response = get_apartment_data(message)
46
- if response:
47
- result = "\n".join([
48
- f"Район: {row['district']}, Застройщик: {row['developer']}, "
49
- f"Класс: {row['project_class']}, Площадь: {row['apt_area']}"
50
- for row in response
51
- ])
52
- # Обновляем историю в правильном формате
53
- history.append({"role": "user", "content": message})
54
- history.append({"role": "assistant", "content": result})
55
- return result, history
56
- else:
57
- # Если ничего не найдено
58
- history.append({"role": "user", "content": message})
59
- history.append({"role": "assistant", "content": "Извините, подходящих вариантов не найдено."})
60
- return "Извините, подходящих вариантов не найдено.", history
61
  else:
62
- # Генерация ответа от модели
63
- messages = [{"role": "system", "content": system_message}]
64
  for h in history:
65
  messages.append(h)
66
- messages.append({"role": "user", "content": message})
 
 
 
 
 
 
67
 
68
- response = ""
69
- for message_chunk in client.chat_completion(
70
- messages,
71
- max_tokens=max_tokens,
72
- stream=True,
73
- temperature=temperature,
74
- top_p=top_p,
75
- ):
76
- token = message_chunk.choices[0].delta.content
77
- response += token
78
 
79
- # Обновляем историю с ответом
80
- history.append({"role": "user", "content": message})
81
- history.append({"role": "assistant", "content": response})
82
- return response, history
83
  except Exception as e:
84
  print(f"Ошибка обработки запроса: {e}")
85
- history.append({"role": "user", "content": message})
86
  history.append({"role": "assistant", "content": "Произошла ошибка при обработке вашего запроса."})
87
  return "Произошла ошибка при обработке вашего запроса.", history
88
 
89
  # Интерфейс Gradio
90
- demo = gr.ChatInterface(
91
- fn=respond,
92
- additional_inputs=[
93
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
94
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
95
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
96
- gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
97
- ],
98
  )
99
 
100
  if __name__ == "__main__":
101
- demo.launch()
 
3
  import gspread
4
  from google.oauth2.service_account import Credentials
5
 
6
+ # Подключение к Google Sheets
 
 
 
7
  SERVICE_ACCOUNT_FILE = "sheet-integration-agent@bold-physics-445007-g4.iam.gserviceaccount.com.json"
8
+ scopes = ["https://www.googleapis.com/auth/spreadsheets"]
9
+ credentials = Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=scopes)
10
+ client_gs = gspread.authorize(credentials)
11
+ spreadsheet = client_gs.open_by_key("1LHgb4eYDM2ImFY3e3h4kPUnDh6oRHpVz2PA29lQ3Xxg")
12
  worksheet = spreadsheet.sheet1
13
 
14
+ # Подключение к модели zephyr-7b-beta через Inference API
15
+ client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
16
+
17
+ # Функция для получения данных из Google Sheets
18
  def get_apartment_data(query):
19
+ rows = worksheet.get_all_records()
20
+ results = []
21
+ for row in rows:
22
+ if query.lower() in row["district"].lower() or query.lower() in row["developer"].lower():
23
+ results.append(row)
24
+ if results:
25
+ return "\n".join(
26
+ [f"Район: {row['district']}, Застройщик: {row['developer']}, Площадь: {row['apt_area']} м²"
27
+ for row in results]
28
+ )
29
+ else:
30
+ return "Извините, подходящих вариантов не найдено."
 
 
 
31
 
32
+ # Функция для обработки запросов
33
+ def respond(message, history):
34
  print("Получен запрос:", message)
35
  print("История общения:", history)
36
 
 
38
  history = []
39
 
40
  try:
41
+ # Если запрос связан с районами или застройщиками
42
  if "район" in message.lower() or "застройщик" in message.lower():
43
  response = get_apartment_data(message)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  else:
45
+ # Обработка запроса через модель
46
+ messages = [{"role": "user", "content": message}]
47
  for h in history:
48
  messages.append(h)
49
+ generated_response = client.chat_completion(
50
+ messages=messages,
51
+ max_tokens=512,
52
+ temperature=0.7,
53
+ top_p=0.95,
54
+ )
55
+ response = generated_response["choices"][0]["message"]["content"]
56
 
57
+ # Формирование корректной истории общения
58
+ history.append({"role": "user", "content": message})
59
+ history.append({"role": "assistant", "content": response})
60
+ return response, history
 
 
 
 
 
 
61
 
 
 
 
 
62
  except Exception as e:
63
  print(f"Ошибка обработки запроса: {e}")
 
64
  history.append({"role": "assistant", "content": "Произошла ошибка при обработке вашего запроса."})
65
  return "Произошла ошибка при обработке вашего запроса.", history
66
 
67
  # Интерфейс Gradio
68
+ chat_interface = gr.ChatInterface(
69
+ respond,
70
+ chatbot_label="Агент по квартирам",
71
+ input_label="Ваш вопрос",
72
+ output_label="Ответ",
 
 
 
73
  )
74
 
75
  if __name__ == "__main__":
76
+ chat_interface.launch()