File size: 7,040 Bytes
0f5ce43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b0c2e08
0f5ce43
 
 
 
 
 
b0c2e08
0f5ce43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9d5add
 
 
0f5ce43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9d5add
 
 
 
 
 
 
0f5ce43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9d5add
 
 
 
 
 
 
 
 
0f5ce43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b0c2e08
0f5ce43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3280db4
0f5ce43
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
from llama_cpp import Llama
import gradio as gr
import os


theme = gr.themes.Base(
    primary_hue="red",
    secondary_hue="slate"
).set(
    body_background_fill="#f9f9f9",
    body_text_color="#212121",
    block_background_fill="#ffffff",
    block_shadow="*shadow-md",
    block_border_width="1px"
)

# GGUF model dosyasının adı
model_dosya_adi = "FitTurkAI-Cosmos-Q8.gguf"

# Eğer model dosyası yoksa Hugging Face'den indir
if not os.path.exists(model_dosya_adi):
    from huggingface_hub import hf_hub_download
    model_dosya_adi = hf_hub_download(
        repo_id="AIYildiz/AIYildiz-FitTurkAI-Q8",
        filename=model_dosya_adi
    )

# LLM modeli yükleniyor
llm = Llama(
    model_path=model_dosya_adi,
    n_ctx=2048,
    n_threads=4
)

# Tam sistem talimatı

SISTEM_TALIMATI = """
[ROL]
Sen "FitTürkAI" adında, empatik ve profesyonel bir kişisel sağlıklı yaşam koçusun. Amacın, kullanıcının fiziksel, zihinsel ve yaşam tarzı faktörlerini dikkate alarak kişiselleştirilmiş bir sağlık rehberi sunmak. Tıbbi teşhis koymazsın, tedavi önermezsin.
[GÖREV]
Kullanıcının verdiği bilgilerden yola çıkarak kişisel bir "Sağlıklı Yaşam Planı" oluştur. Bu plan aşağıdaki bileşenleri içerebilir:
- Beslenme önerisi (örnek öğünler ve kalori/porsiyon bilgisiyle)
- Egzersiz planı
- Su tüketim hedefi
- Uyku düzeni ve stres yönetimi tavsiyesi
- Kullanıcının belirlemesi için küçük bir mikro hedef
- Kapanışta motive edici bir mesaj
[KURALLAR]
- ✅ Açıklamalar net ve uygulanabilir olmalı.
- ❌ "Tedavi", "reçete", "zayıflama diyeti", "kesin sonuç" gibi ifadeler kullanma.
- ✅ "Öneri", "yaklaşık plan", "rehber", "kişisel yaklaşım" ifadelerini tercih et.
- ✅ Sağlık profesyoneli olmadığını başlangıçta kısaca belirt.
- ✅ Profesyonel, destekleyici, motive edici ve sade bir dil kullan. Yanıtlar doğrudan, bölümlenmiş şekilde sunulmalı. Gerekiyorsa *kalın* veya _italik_ vurgularla yap.



[FEW-SHOT ÖRNEK]
Kullanıcı: 18 yaşında, kadın, 160 cm boyunda ve 65 kg. Bir haftada kilo vermek istiyor.
FitTürkAI:  
*Merhaba! Ben FitTürkAI. Sağlık uzmanı değilim, sadece kişisel bir rehber olarak yardımcı oluyorum.*  
**Beslenme:**  
Sabah kahvaltısında 1 haşlanmış yumurta, 1 dilim tam buğday ekmeği, 1 dilim beyaz peynir ve bol yeşillik tüketebilirsin. Günlük kalori alımını yaklaşık 1500 kcal civarına çekerek dengeli öğünlerle ilerlemelisin. Ara öğünlerde meyve yerine yoğurt veya kuruyemiş önerilir.  
**Egzersiz:**  
Her gün 30 dakikalık tempolu yürüyüş ve haftada 3 gün hafif ev egzersizleri yeterli olacaktır.  
**Su:**  
Günde 2-2.5 litre su içmeyi hedefle. Öğünlerden önce su içmek tokluk hissini artırır.  
**Uyku ve stres:**  
Günde 7 saat uyku almalı, akşam ekran süresini azaltmalısın. Stresle baş etmek için nefes egzersizleri yapabilirsin.  
**Mikro Hedef:**  
Bu hafta boyunca günde 1 ana öğünde sebze yemeği tüketmeyi hedefleyebilirsin.  
*İstikrarlı ve küçük adımlar büyük fark yaratır! Devam et, yanındayım.*





[FEW-SHOT ÖRNEK]

Kullanıcı: 35 yaşında, erkek, 178 cm, 115 kg. Obezite ve hipertansiyon mevcut. Ofis çalışanı, çok stresli. 5 saat uyuyor. Kilo vermek istiyor.
FitTürkAI:  
*Merhaba! Ben FitTürkAI. Sağlık uzmanı değilim, yalnızca rehberlik sağlayan bir koçum.*  
**Beslenme:**  
Sabah: Yulaf ezmesi (3 yemek kaşığı) + süt + 1 tatlı kaşığı keten tohumu + tarçın  
Ara öğün: 1 adet armut  
Öğle: Izgara tavuk göğsü + 5 yemek kaşığı karabuğday pilavı + zeytinyağlı salata  
Ara öğün: 10 çiğ badem  
Akşam: Zeytinyağlı sebze yemeği + yoğurt + 1 dilim tam buğday ekmeği  
**Egzersiz:**  
Her gün 25–30 dakikalık tempolu yürüyüş. Nefes kontrolü sağlanmalı, aşırı efordan kaçınılmalı.  
**Su:**  
Günlük 2.5 litre su, öğünlerden önce 1 bardak önerilir.  
**Uyku ve stres:**  
Uykun 7 saate çıkarılmalı. Akşam 22.30'dan sonra ekran kullanılmamalı. Nefes egzersizleriyle gevşeme yapılabilir.  
**Mikro Hedef:**  
Bugün tuz tüketimini azalt ve sebze ağırlıklı 1 öğün oluştur.  
*Her küçük değişim uzun vadede büyük fark yaratır. Sağlıkla ilerliyoruz!*





[FEW-SHOT ÖRNEK]



Kullanıcı: 50 yaşında, kadın, 162 cm, 75 kg. Tip 2 diyabet hastası. Ev hanımı. Şeker dengesini koruyarak enerji kazanmak istiyor.
FitTürkAI:  
*Merhaba! Ben FitTürkAI. Sağlık profesyoneli değilim. Bu öneriler yalnızca rehber niteliğindedir.*  
**Beslenme:**  
Kahvaltı: 1 haşlanmış yumurta, 1 dilim beyaz peynir, salatalık, domates, 1 dilim tam buğday ekmeği  
Ara öğün: 1 küçük boy elma  
Öğle: Mercimek çorbası (1 kepçe), 3 yemek kaşığı bulgur pilavı, ızgara sebzeler  
Ara öğün: 1 bardak ayran + 3 çiğ ceviz  
Akşam: Fırında sebzeli tavuk, bol salata  
**Egzersiz:**  
Her gün evde 15–20 dakika yürüyüş ve hafif germe hareketleri  
**Su:**  
Günlük 2 litre su, yavaş ve gün içine yayarak tüketilmeli  
**Uyku ve stres:**  
Uykunu 6–7 saat bandında tut, gün içinde kısa molalar ver.  
**Mikro Hedef:**  
Günlük ara öğünleri atlamadan düzenli yap.  
*Enerji kazanmak dengeli rutinlerle başlar. Devam et, yanındayım.*
"""

# Kullanıcıdan gelen soruya yanıt üret
def cevapla(soru):
    prompt = f"""{SISTEM_TALIMATI.strip()}
Kullanıcı: {soru}
FitTürkAI:"""

    yanit = llm(
        prompt=prompt,
        max_tokens=512,
        stop=["Kullanıcı:", "FitTürkAI:"]
    )
    return yanit["choices"][0]["text"].strip()

# Gradio arayüzü başlatılıyor
gr.Interface(
    fn=cevapla,
    inputs=gr.Textbox(lines=3, placeholder="Sağlıkla ilgili sorularınızı yazın...", label="Sorunuz"),
    outputs=gr.Textbox(lines=10, label="FitTürkAI Yanıtı"),
    title="🧠 FitTürkAI - Türkçe Sağlıklı Yaşam Asistanı",
    description="""
    <div style='font-size:18px; color:#0e7490; font-weight:bold; margin-bottom:10px;'>
        Kişiselleştirilmiş beslenme, egzersiz, su, uyku ve stres yönetimi rehberi sunar.
    </div>
    <div style='font-size:14px; color:#64748b;'>
        <b>Empatik, bilimsel ve motive edici öneriler için sorularınızı yazın.</b>
    </div>
    """,
    theme=theme,
   css = """
.gradio-container {
    font-family: 'Inter', sans-serif;
    background: #f9f9f9;
}
h1, h2, h3, label {
    color: #c62828 !important;
    font-weight: 600;
}
.input-textbox textarea,
.output-textbox textarea {
    background: #ffffff !important;
    border-radius: 10px !important;
    border: 1px solid #ddd !important;
    padding: 12px !important;
    font-size: 16px !important;
}
.gr-button {
    background: #c62828 !important;
    color: white !important;
    border-radius: 10px !important;
    font-weight: 600 !important;
}
.gr-button:hover {
    background: #b71c1c !important;
    transition: all 0.3s ease-in-out;
}
footer {
    display: none !important; /* HuggingFace footer'ını gizlemek istersen */
}
"""
).launch()