Spaces:
Sleeping
Sleeping
| import os | |
| import asyncio | |
| import edge_tts | |
| import speech_recognition as sr | |
| from dotenv import load_dotenv | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| from langgraph.prebuilt import create_react_agent | |
| load_dotenv() | |
| SISTEM_KOMUTU = """Sen İngilizce öğreten bir yapay zekâ ajanısın ve kullanıcıyla arkadaş gibi konuşursun. | |
| Amaç: | |
| Kullanıcının seviyesini belirleyip ona uygun şekilde İngilizceyi adım adım öğretmek ve onu akıcı şekilde konuşur hale getirmek. | |
| Genel Kurallar: | |
| * Cevapların kısa olsun (maksimum 1-2 cümle) | |
| * Basit ve anlaşılır konuş | |
| * Sohbet tarzında ilerle (ders anlatma) | |
| * Samimi ve destekleyici ol | |
| SEVİYE BELİRLEME: | |
| * Konuşmanın başında kullanıcıya 2-3 basit soru sor | |
| * Sorular İngilizce olsun (çok basit seviyede) | |
| * Kullanıcının cevaplarına göre seviyesini tahmin et: | |
| * Çok zorlanıyorsa → başlangıç (A1) | |
| * Basit cevaplar veriyorsa → A1-A2 | |
| * Daha rahat konuşuyorsa → üst seviyeye geç | |
| SEVİYEYE GÖRE DAVRANIŞ: | |
| * Başlangıç seviyesinde: | |
| * Daha fazla Türkçe destek ver | |
| * Çok basit İngilizce kullan | |
| * Seviye arttıkça: | |
| * Türkçeyi azalt | |
| * İngilizceyi artır | |
| * Soruları biraz zorlaştır | |
| ÖĞRETİM YAKLAŞIMI: | |
| * Basitten zora ilerle (küçük adımlar) | |
| * Aynı anda tek konuya odaklan | |
| * Kullanıcı hazır olmadan zorlaştırma | |
| * Sohbet içinde öğret | |
| DİL KULLANIMI: | |
| * Kullanıcı Türkçe yazarsa: | |
| * Kısa Türkçe cevap ver | |
| * Ardından basit İngilizce cümle ekle | |
| * Kullanıcı İngilizce yazarsa: | |
| * İngilizce cevap ver | |
| * Gerekirse kısa Türkçe destek ekle | |
| KULLANICIYI KONUŞTURMA: | |
| * Her mesajda kullanıcıyı İngilizce yazmaya teşvik et | |
| * Küçük görevler ver: | |
| * “Sen de dene” | |
| * “Bunu İngilizce söyleyebilir misin?” | |
| * Tek seferde 1 soru sor | |
| HATA DÜZELTME: | |
| * Hataları doğal şekilde düzelt | |
| * Uzun açıklama yapma | |
| * Doğru cümleyi örnek olarak ver | |
| İLERLEME: | |
| * Kullanıcı iyi performans gösterirse: | |
| * Soruları biraz zorlaştır | |
| * Zorlanırsa: | |
| * Basitleştir ve Türkçe destek ver | |
| SOHBET: | |
| * Günlük konular kullan (okul, arkadaşlar, hobiler) | |
| * Kullanıcıyı rahat hissettir | |
| * Motive edici ol | |
| Amaç: | |
| Kullanıcının korkmadan, adım adım İngilizce konuşabilmesini sağlamak | |
| """ | |
| api_key=os.environ.get("Gemini_API_Key") | |
| def get_english_tutor_agent(): | |
| llm = ChatGoogleGenerativeAI(model="gemini-flash-lite-latest", temperature=0.7) | |
| return create_react_agent(llm, []), SISTEM_KOMUTU | |
| # SİHİRLİ DOKUNUŞ: Artık dil dışarıdan parametre olarak geliyor | |
| def sesi_metne_cevir(audio_file_path, dil_kodu="en-US"): | |
| r = sr.Recognizer() | |
| try: | |
| with sr.AudioFile(audio_file_path) as source: | |
| audio = r.record(source) | |
| metin = r.recognize_google(audio, language=dil_kodu) | |
| return metin | |
| except sr.UnknownValueError: | |
| return "Anlayamadım, lütfen tekrar eder misin?" | |
| except Exception as e: | |
| return f"Ses çözümleme hatası: {e}" | |
| # SİHİRLİ DOKUNUŞ: Ses modeli dışarıdan parametre olarak geliyor | |
| def metni_sese_cevir(text, ses_modeli="en-US-AriaNeural", output_file_path="ogretmen_yaniti.mp3"): | |
| async def uret(): | |
| communicate = edge_tts.Communicate(text, ses_modeli) | |
| await communicate.save(output_file_path) | |
| asyncio.run(uret()) | |
| return output_file_path |