File size: 3,348 Bytes
99b72f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c39edc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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