translator но без озвучивания слов на английском
This commit is contained in:
67
ai.py
67
ai.py
@@ -16,6 +16,10 @@ SYSTEM_PROMPT = """Ты — Александр, умный голосовой а
|
||||
Пиши в разговорном стиле, как при живом общении, но не забывай о вежливости и правильности твоих ответов.
|
||||
ВАЖНО: Не используй в ответах панибратские или сленговые приветствия и обращения, такие как "Эй", "Хэй", "Слушай" в начале фразы и подобные."""
|
||||
|
||||
TRANSLATION_SYSTEM_PROMPT = """You are a translation engine.
|
||||
Translate from {source} to {target}.
|
||||
Return only the translated text, without quotes, comments, or explanations."""
|
||||
|
||||
|
||||
def ask_ai(messages_history: list) -> str:
|
||||
"""
|
||||
@@ -72,3 +76,66 @@ def ask_ai(messages_history: list) -> str:
|
||||
except (KeyError, IndexError) as e:
|
||||
print(f"❌ Ошибка парсинга ответа: {e}")
|
||||
return "Не удалось обработать ответ от AI."
|
||||
|
||||
|
||||
def translate_text(text: str, source_lang: str, target_lang: str) -> str:
|
||||
"""
|
||||
Translate text using Perplexity AI.
|
||||
|
||||
Args:
|
||||
text: Text to translate
|
||||
source_lang: Source language code ("ru" or "en")
|
||||
target_lang: Target language code ("ru" or "en")
|
||||
|
||||
Returns:
|
||||
Translated text
|
||||
"""
|
||||
if not text:
|
||||
return "Извините, я не расслышал текст для перевода."
|
||||
|
||||
lang_names = {"ru": "Russian", "en": "English"}
|
||||
source_name = lang_names.get(source_lang, source_lang)
|
||||
target_name = lang_names.get(target_lang, target_lang)
|
||||
|
||||
print(f"🌍 Перевод: {source_name} -> {target_name}: {text[:60]}...")
|
||||
|
||||
headers = {
|
||||
"Authorization": f"Bearer {PERPLEXITY_API_KEY}",
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": TRANSLATION_SYSTEM_PROMPT.format(
|
||||
source=source_name, target=target_name
|
||||
),
|
||||
},
|
||||
{"role": "user", "content": text},
|
||||
]
|
||||
|
||||
payload = {
|
||||
"model": PERPLEXITY_MODEL,
|
||||
"messages": messages,
|
||||
"max_tokens": 400,
|
||||
"temperature": 0.2,
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(
|
||||
PERPLEXITY_API_URL, headers=headers, json=payload, timeout=30
|
||||
)
|
||||
response.raise_for_status()
|
||||
|
||||
data = response.json()
|
||||
ai_response = data["choices"][0]["message"]["content"]
|
||||
return ai_response.strip()
|
||||
|
||||
except requests.exceptions.Timeout:
|
||||
return "Извините, сервер не отвечает. Попробуйте позже."
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ Ошибка API перевода: {e}")
|
||||
return "Произошла ошибка при переводе. Попробуйте ещё раз."
|
||||
except (KeyError, IndexError) as e:
|
||||
print(f"❌ Ошибка парсинга ответа перевода: {e}")
|
||||
return "Не удалось обработать перевод."
|
||||
|
||||
Reference in New Issue
Block a user