def parse_intent_with_ai(user_speech):
global chat_history, user_name, current_lang
chat_history.append(f"{user_name}: {user_speech}")
context_slice = chat_history[-10:]
context_str = "\n".join(context_slice)
prompt = f"""
Ты — Нова, элитный голосовой ассистент на ПК. Пользователя зовут "{user_name}". Текущий язык: "{current_lang}".
Проанализируй фразу и верни СТРОГО JSON без markdown-оформления (без ```json):
{{
"action": "open_chat", "change_language", "set_name", "open_youtube", "google_search", "open_app",
"open_folder", "empty_recycle_bin", "shutdown_pc", "cancel_shutdown", "sleep_pc",
"time_info", "battery_info", "take_screenshot", "create_note", "copy_files", "exit", или "chat",
"messenger": "telegram, discord или whatsapp",
"chat_target": "имя контакта или чата",
"new_lang": "код языка",
"new_name": "новое имя",
"query": "поисковый запрос",
"app_name": "программа",
"folder_name": "папка",
"minutes": 0,
"note_text": "текст",
"source_path": "",
"dest_path": "",
"text": "ответ пользователю"
}}
История разговора:
{context_str}
Текущая фраза: "{user_speech}"
"""
try:
completion = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": prompt}],
temperature=0.1
)
clean_text = completion.choices[0].message.content.replace("```json", "").replace("```", "").strip()
result = json.loads(clean_text)
if result.get("action") == "change_language":
n_lang = result.get("new_lang")
if n_lang:
current_lang = n_lang.lower()
app_settings["lang"] = current_lang
save_settings(app_settings)
if result.get("action") == "set_name":
new_n = result.get("new_name")
if new_n:
user_name = new_n
app_settings["user_name"] = user_name
save_settings(app_settings)
if result.get("action") in ["chat", "set_name", "change_language", "open_chat"]:
chat_history.append(f"Нова: {result.get('text')}")
save_memory()
return result
except Exception as e:
print(f"Ошибка ИИ Groq: {e}")
return {"action": "chat", "text": "Я не совсем поняла команду, повторите пожалуйста."}