zelk12 commited on
Commit
9f0898f
·
verified ·
1 Parent(s): 3109021

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -82
app.py CHANGED
@@ -37,90 +37,42 @@ used_model = "gemini-2.5-flash-preview-04-17"
37
 
38
  print("Define test response work")
39
  def model_response(message, history):
40
- # print(f"\n=========\nUser message\n{message}\n")
41
- # chat = client.chats.create(model=used_model, history=history)
42
- # print(message["text"])
43
- # response = chat.send_message(message["text"])
44
- # print(f"\nResponse\n{response}=========\n")
45
 
46
- # return response.text
47
-
48
- message = message["text"]
49
-
50
- print(f"Получено сообщение: {message}")
51
- print(f"Получена история Gradio: {history}") # Выводим историю для отладки
52
-
53
- # --- Преобразование формата истории Gradio в формат Google GenAI ---
54
  gemini_history = []
55
- # Итерация по истории Gradio. Ищем только завершенные пары [пользователь, бот].
56
- for turn in history:
57
- # Проверяем, является ли элемент списком/кортежем из 2 элементов
58
- if isinstance(turn, (list, tuple)) and len(turn) == 2:
59
- human, assistant = turn # Распаковка безопасна
60
-
61
- # Добавляем ПРЕДЫДУЩИЙ ход только если он ПОЛНОСТЬЮ завершен (есть и пользователь, и бот)
62
- # И сообщения не пустые после удаления пробелов
63
- human_text = str(human).strip() if human is not None else ""
64
- assistant_text = str(assistant).strip() if assistant is not None else ""
65
-
66
- if human_text != "" and assistant_text != "":
67
- gemini_history.append({'role': 'user', 'parts': [{'text': human_text}]})
68
- gemini_history.append({'role': 'model', 'parts': [{'text': assistant_text}]})
69
- elif human_text != "" and assistant_text == "":
70
- # Это может быть незавершенный последний ход пользователя.
71
- # Его не добавляем в history для start_chat, т.к. текущий message уже содержит последний ввод.
72
- # Можно вывести предупреждение, если это неожиданно
73
- print(f"Warning: Skipping incomplete user turn in history: {turn}")
74
- # Если ни human, ни assistant не содержат текста, просто пропускаем.
75
- # Если assistant есть, а human нет, это тоже странно, пропускаем.
76
-
77
- else:
78
- # Если формат неожиданный (не пара [user, bot]), пропускаем
79
- print(f"Warning: Skipping non-[user, bot] history entry: {turn}")
80
-
81
-
82
- print(f"Отформатированная история для Gemini (для start_chat): {gemini_history}")
83
-
84
- try:
85
- # Инициализируем модель здесь, чтобы использовать ее объект
86
- # model = genai.GenerativeModel(used_model)
87
-
88
- # Создать новую сессию чата с историческим контекстом
89
- # Передаем только завершенные предыдущие ходы.
90
- chat = client.chats.create(model=used_model, history=gemini_history)
91
-
92
- # Отправить *текущее* сообщение пользователя
93
- # Текущее сообщение 'message' всегда отправляется отдельно методом send_message
94
- # Убедимся, что текущее сообщение не пустое
95
- current_message_text = str(message).strip()
96
- if current_message_text == "":
97
- return "Пожалуйста, введите ваше сообщение." # Вернуть сообщение, если пользователь отправил пустое
98
-
99
- response = chat.send_message(current_message_text)
100
-
101
- # Извлечь текстовый ответ
102
- # Проверим, что ответ не пустой и что он вообще есть
103
- response_text = ""
104
- if response and response.text:
105
- response_text = response.text.strip()
106
- else:
107
- # Если ответ пустой или произошла другая проблема с ответом
108
- print(f"Warning: Received empty or invalid response from model for message: {current_message_text}")
109
- # Можно попытаться получить дополнительную информацию из response, если доступно
110
- # print(f"Full response object: {response}")
111
- return "Извините, я не смог сгенерировать ответ." # Или другое сообщение об ошибке
112
-
113
- print(f"Ответ модели: {response_text}")
114
-
115
- return response_text
116
-
117
- except Exception as e:
118
- print(f"Error calling Google GenAI API: {e}")
119
- # Обработка потенциальных ошибок
120
- # Можно попробовать получить детали ошибки из API, если они есть в исключении e
121
- error_message = f"Произошла ошибка при генерации ответа: {e}"
122
- # TODO: Парсить e, чтобы дать более конкретное сообщение, например, о модерации
123
- return error_message
124
 
125
  print("Define test1 response work")
126
  def random_response(message, history):
 
37
 
38
  print("Define test response work")
39
  def model_response(message, history):
40
+ print(f"\n=========\nUser message\n{message}\n")
 
 
 
 
41
 
42
+ print("Format history")
 
 
 
 
 
 
 
43
  gemini_history = []
44
+
45
+ for message in messages:
46
+ #print(f"t1 {message}")
47
+ # Skip thinking messages (messages with metadata)
48
+ #if not (message.get("role") == "assistant" and "metadata" in message):
49
+ # print(f"t2 {message}")
50
+ # formatted_history.append({
51
+ # "role": "user" if message.get("role") == "user" else "assistant",
52
+ # "parts": [message.get("content", "")]
53
+ # })
54
+
55
+ #print(f"t2 {message}")
56
+
57
+ if message.get("role") == "user" :
58
+ formatted_history.append({
59
+ "role": "user",
60
+ "parts": [message.get("content", "")]
61
+ })
62
+ elif message.get("role") == "assistant" :
63
+ formatted_history.append({
64
+ "role": "model",
65
+ "parts": [message.get("content", "")]
66
+ })
67
+
68
+ print("Create chat")
69
+ chat = client.chats.create(model=used_model, history=gemini_history)
70
+
71
+ print("Start response")
72
+ response = chat.send_message(message["text"])
73
+ print(f"\nResponse\n{response}=========\n")
74
+
75
+ return response.text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
 
77
  print("Define test1 response work")
78
  def random_response(message, history):