Update app.py
Browse files
app.py
CHANGED
@@ -45,30 +45,36 @@ def model_response(message, history):
|
|
45 |
|
46 |
# return response.text
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
62 |
|
63 |
print(f"Отформатированная история для Gemini: {gemini_history}")
|
64 |
|
65 |
try:
|
66 |
# Создать новую сессию чата с историческим контекстом
|
67 |
-
# Примечание: Это инициализирует чат с предыдущими ходами.
|
68 |
# Вместо client.chats.create используем client.start_chat
|
69 |
-
|
|
|
70 |
|
71 |
# Отправить *текущее* сообщение пользователя
|
|
|
72 |
response = chat.send_message(message)
|
73 |
|
74 |
# Извлечь текстовый ответ
|
@@ -80,8 +86,7 @@ def model_response(message, history):
|
|
80 |
|
81 |
except Exception as e:
|
82 |
print(f"Ошибка вызова Google GenAI API: {e}")
|
83 |
-
# Обработка потенциальных
|
84 |
-
# Возможно, вы захотите вернуть пользователю информативное сообщение
|
85 |
return f"Произошла ошибка при генерации ответа: {e}"
|
86 |
|
87 |
print("Define test1 response work")
|
|
|
45 |
|
46 |
# return response.text
|
47 |
|
48 |
+
for turn in history:
|
49 |
+
# Проверяем, является ли элемент списком/кортежем и содержит ли ровно 2 элемента
|
50 |
+
if isinstance(turn, (list, tuple)) and len(turn) == 2:
|
51 |
+
human, assistant = turn # Теперь распаковка безопасна
|
52 |
+
|
53 |
+
# Добавляем сообщение пользователя, если оно есть
|
54 |
+
if human is not None and str(human).strip() != "": # Добавим проверку на пустую строку
|
55 |
+
gemini_history.append({'role': 'user', 'parts': [{'text': str(human).strip()}]})
|
56 |
+
|
57 |
+
# Добавляем сообщение ассистента, если оно есть (для предыдущих ходов)
|
58 |
+
# Проверяем assistant, так как для последнего хода бота его еще нет (None)
|
59 |
+
if assistant is not None and str(assistant).strip() != "": # Добавим проверку на пустую строку
|
60 |
+
gemini_history.append({'role': 'model', 'parts': [{'text': str(assistant).strip()}]})
|
61 |
+
else:
|
62 |
+
# Если формат неожиданный, можно пропустить эту запись или вывести предупреждение
|
63 |
+
print(f"Warning: Skipping malformed history entry: {turn}")
|
64 |
+
# При необходимости можно сгенерировать ошибку, если такой формат не должен встречаться:
|
65 |
+
# raise ValueError(f"Unexpected history format received from Gradio: {turn}")
|
66 |
+
|
67 |
|
68 |
print(f"Отформатированная история для Gemini: {gemini_history}")
|
69 |
|
70 |
try:
|
71 |
# Создать новую сессию чата с историческим контекстом
|
|
|
72 |
# Вместо client.chats.create используем client.start_chat
|
73 |
+
# Если gemini_history пуста, это будет новый чат без истории, что нормально для первого сообщения
|
74 |
+
chat = client.start_chat(history=gemini_history)
|
75 |
|
76 |
# Отправить *текущее* сообщение пользователя
|
77 |
+
# Текущее сообщение `message` всегда отправляется отдельно методом send_message
|
78 |
response = chat.send_message(message)
|
79 |
|
80 |
# Извлечь текстовый ответ
|
|
|
86 |
|
87 |
except Exception as e:
|
88 |
print(f"Ошибка вызова Google GenAI API: {e}")
|
89 |
+
# Обработка потенциальных ошибок
|
|
|
90 |
return f"Произошла ошибка при генерации ответа: {e}"
|
91 |
|
92 |
print("Define test1 response work")
|