diff --git a/main.py b/main.py
index 3225943..cbdf40f 100644
--- a/main.py
+++ b/main.py
@@ -84,6 +84,7 @@ def __init__(self, parent=None):
# Поле ввода текста
self.text_input = LineEdit(self)
+ self.text_input.returnPressed.connect(self.send_message)
self.input_layout.addWidget(self.text_input)
# Кнопка отправки
diff --git a/mind.py b/mind.py
index a810fa2..6f20379 100644
--- a/mind.py
+++ b/mind.py
@@ -95,6 +95,7 @@ def answer():
!!!пиши код, когда это необходимо и не забывай писать его в ...!!!
!!!без функции answer() ты не сможешь выполнить код!!!
!!!Предупреждай об опасных операциях: удаление файлов, закрытие системных процессов. Будь осторожнее!!!
+Отвечай всегда на том языке на котором был задан вопрос
{code_snippets}
@@ -119,55 +120,75 @@ def init_new_chat(self):
def get_ai_response(self, input_string, card):
self.titleBar.set_animation(1)
self.messages_array.append({"role": "user", "content": input_string})
- self.thread = threading.Thread(target=self.response_thread, args=[card])
+ self.thread = threading.Thread(target=self.response_thread, args=(card, input_string))
self.thread.start()
- def response_thread(self, card):
- try:
- response = g4f.ChatCompletion.create(model="gpt-4o",
- messages=self.messages_array,
- stream=True)
- #response = self.localClient.chat.completions.create(model = 'orca-mini-3b', messages = [self.messages_array],stream = True)
- result = Message()
- ress = ""
- for part in response:
- ress += part
- result.from_string(ress)
- card.set_content(result)
-
- card.set_content(result)
- self.messages_array.append({"role": "assistant", "content": ress})
- code_result = self.code_exec_result(ress)
- if code_result is not None:
- result.text = code_result
- card.set_content(result)
- else:
- card.set_content(result)
- self.titleBar.set_animation(0)
- print(result)
- return result
- except Exception as e:
- return str(e)
+ def response_thread(self, card, input_string):
+ max_retries = 3 # Максимальное количество повторных попыток
+ retry_count = 0
+
+ while retry_count < max_retries:
+ try:
+ # Ваш код для обращения к модели и обработки ответа
+
+ response = g4f.ChatCompletion.create(
+ model="gpt-4o",
+ messages=self.messages_array,
+ stream=True
+ )
+
+ result = Message()
+ ress = ""
+ for part in response:
+ ress += part
+ result.from_string(ress)
+ card.set_content(result)
+
+ # Проверяем, пустой ли ответ
+ if ress.strip() == "":
+ retry_count += 1
+ print(f"Пустой ответ получен. Повторная попытка {retry_count} из {max_retries}.")
+ continue # Повторяем цикл для повторной попытки
+ else:
+ self.messages_array.append({"role": "assistant", "content": ress})
+
+ code_result = self.code_exec_result(ress)
+ if code_result is not None:
+ result.text = code_result
+ card.set_content(result)
+ else:
+ card.set_content(result)
+ break # Выходим из цикла после успешного ответа
- def code_exec_result(self, input):
+ except Exception as e:
+ retry_count += 1
+ print(f"Ошибка при получении ответа: {e}. Попытка {retry_count} из {max_retries}.")
+ continue # Повторяем цикл для повторной попытки
+
+ if retry_count == max_retries:
+ print("Не удалось получить ответ от модели после нескольких попыток.")
+ card.set_content(Message(text="Извините, не удалось получить ответ. Попробуйте ещё раз."))
+
+ self.titleBar.set_animation(0)
+
+ def code_exec_result(self, input_str):
try:
- if "" in input and "" in input:
- print("pt1 is ok")
- match = re.search(pattern_code, input, re.DOTALL)
+ if "" in input_str and "" in input_str:
+ match = re.search(pattern_code, input_str, re.DOTALL)
if match:
code_inside_tags = match.group(1)
code = code_inside_tags
- with open("execute.py", "w", encoding='utf-8') as file:
- file.write(code)
- else:
- return None
+ local_vars = {}
+ exec(code, {}, local_vars)
+ if 'answer' in local_vars:
+ result = local_vars['answer']()
+ return result
+ else:
+ return "Ошибка: функция 'answer' не найдена."
else:
return None
- importlib.reload(execute)
- result = execute.answer()
- return result
- except:
- return None
+ except Exception as e:
+ return f"Ошибка выполнения кода: {e}"
@dataclass