zelk12 commited on
Commit
1a6ba3b
·
verified ·
1 Parent(s): 397112f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -18
app.py CHANGED
@@ -45,30 +45,36 @@ def model_response(message, history):
45
 
46
  # return response.text
47
 
48
- message = message["text"]
49
-
50
- # --- Преобразование формата истории Gradio в формат Google GenAI ---
51
- gemini_history = []
52
- # История Gradio обычно [['user1', 'bot1'], ['user2', 'bot2'], ..., ['usern', None]]
53
- # Нам нужно отформатировать предыдущие ходы (user1/bot1, user2/bot2 и т.д.)
54
- # Текущее сообщение 'message' будет отправлено *после* создания чата с историей.
55
- for human, assistant in history:
56
- # Добавить сообщение пользователя, если оно существует
57
- if human is not None:
58
- gemini_history.append({'role': 'user', 'parts': [{'text': human}]})
59
- # Добавить сообщение ассистента, если оно существует (для предыдущих ходов)
60
- if assistant is not None:
61
- gemini_history.append({'role': 'model', 'parts': [{'text': assistant}]})
 
 
 
 
 
62
 
63
  print(f"Отформатированная история для Gemini: {gemini_history}")
64
 
65
  try:
66
  # Создать новую сессию чата с историческим контекстом
67
- # Примечание: Это инициализирует чат с предыдущими ходами.
68
  # Вместо client.chats.create используем client.start_chat
69
- chat = client.chats.create(model=used_model, history=gemini_history)
 
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
- # Обработка потенциальных ошибок, например, блокировка модерацией контента, ошибки API
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")