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")
|