Bu repo; TEKNOFEST Türkçe Doğal Dil İşleme Yarışması kapsamında geliştirilen Bilişsel Davranışçı Terapi (BDT) odaklı Psikolojik Destek Sohbet Botu (TerapAI) kodlarını içermektedir. Globalde uzun yıllardır üzerine çalışmalar yapılan terapi sohbet botunun, ne yazık ki ülkemizde bir örneğine rastlamadık. Biz SYNTURK ekibi olarak bu eksiklik üzerine çalışıp #MilliTeknolojiHamlesi kapsamında Türkçe Doğal Dil İşleme gelişimine katkıda bulunmayı hedefledik. Aynı zamanda terapiye ulaşımları olmayan insanların fırsat eşitsizliğinin önüne geçmek istedik. Veriseti konusunda ne yazık ki Türkçe bir kaynak bulamadık. Bu sebeple globalde çalışılan verisetlerini anadile çevirerek ~25000 veriden oluşan bir veriseti oluşturduk. Ruh sağlığının hassas bir konu olması sebebiyle, verilerimiz işlenmeden önce ekibimizdeki psikolog kontrolünden geçmiş ve süreç titizlikle yürütülmüştür. Bizden sonraki çalışmaları desteklemek amacıyla bu verisetini açık kaynaklı olarak paylaşılmıştır.
⚠️ Etik Uyarı: TerapAI kriz müdahalesi yapmaz ve tanı koymaz. Ağır depresyon, intihar düşüncesi, travma vb. durumlarda bir profesyonelden acil destek alınmalıdır.
CACTUS (HF Datasets)
│
├── pipelines/translate/translate_dialogues.py
│ ➜ TR çeviri + pointer hizalama (otomatik)
│
├── pipelines/format/data_formatter.py
│ ➜ Tekdüzen şema (chat/SFT) oluşturma
│
├── pipelines/convert/convert_to_finetome.py
│ ➜ Fine‑tune besleme biçimi (seçilen chat template’e uygun)
│
└── (HF Datasets/Models)
➜ Yükleme / Eğitim / Değerlendirme / Yayınlama (my_model)
- Kurulum
- Repo Yapısı
- Kısaca Ne Yaptık?
- Modüller & Dokümantasyon
- Veri Biçimleri
- Sorun Giderme
- Lisans ve Atıflar
- Katkı
git clone https://github.com/Syntax-Turkiye/TerapAI.git
cd TerapAI
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate
# requirements.txt varsa
pip install -r requirements.txt
TerapAI/
├─ data_preparing/
│ ├─ .env.example
│ ├─ README.md
│ ├─ convert_to_finetome.py
│ ├─ data_formatter.py
│ ├─ pointer.json
│ ├─ translate_dialogues.py
│
├─ terapAI-app/
│ ├─ Gradio.ipynb # modeli başlatma
│
├─ model_training/
│ ├─ TerapAI_Phi4_Training.ipynb
├─
├─ requirements.txt
└─ README.md
Aşağıdaki komutlar örnektir; gerçek argümanları modül README’lerinde bulabilirsiniz.
Ayrıntılar için:
data_prepairing/README.md
Çeviri:
python pipelines/translate/translate_dialogues.py --source_dataset "LangAGI-Lab/cactus" --split train --out_dir data/translated --max_workers 8 --batch_size 16
Çeviri sonrası pointer alanları otomatik hizalanır.
Formatlama:
python pipelines/format/data_formatter.py --in_dir data/translated --out_path data/formatted/dataset.jsonl --schema chat
python pipelines/convert/convert_to_finetome.py --hf_dataset <user>/terapai-tr-formatted --split train --out_dir data/finetune --template phi-4-chat
Hugging Face’e Yükleme:
huggingface-cli repo create <user>/terapai-tr-finetune --type dataset
git clone https://huggingface.co/datasets/<user>/terapai-tr-finetune
cp -r data/finetune/* terapai-tr-finetune/
cd terapai-tr-finetune
git add . && git commit -m "Add finetune-ready dataset" && git push
Ayrıntılar için:
terapAI-app/README.md
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "<user>/my_model"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16, device_map="auto")
prompt = "Merhaba, son günlerde kendimi kaygılı hissediyorum. Nereden başlamalıyım?"
inputs = tok.apply_chat_template([
{"role": "user", "content": prompt}
], return_tensors="pt", add_generation_prompt=True).to(model.device)
with torch.no_grad():
out = model.generate(inputs, max_new_tokens=512, do_sample=True, temperature=0.8, top_p=0.9,
eos_token_id=tok.eos_token_id)
print(tok.decode(out[0], skip_special_tokens=True))
▶️ Veri Çevirme ve Formatlama — pipelines/translate/README.md▶️ Çalıştırma (inference) — inference/README.md
-
translated (JSONL):
dialogue/role/content/pointers/...
-
formatted (JSONL): tekdüzen şema
- chat:
{ "messages": [{"role":"user","content":"..."},{"role":"assistant","content":"..."}] }
- SFT:
{ "instruction":"...", "input":"...", "output":"..." }
- chat:
-
finetune: seçili chat template’e uyumlu, temizlenmiş kayıtlar
Tam şema ayrıntıları modül README’lerinde yer alır.
- HF token/izin:
huggingface-cli login
+HF_TOKEN
doğrulayın. - API kota/süre aşımı: Paralelliği düşürün, retry/backoff ekleyin.
- Pointer sapması: Çeviri sonrası hizalama fonksiyonuna birim testleri ekleyin.
- Unicode/emoji: JSONL yazarken
ensure_ascii=False
, dosya kodlamasıutf-8
.
- CACTUS veri seti: CACTUS veri setinin çeviri/türevlerini içerir; bu nedenle veri varlıkları GPL-3.0 lisansı altında dağıtılır. Koşullar ve atıf için orijinal veri setine başvurun.
“LangAGI-Lab’ın CACTUS veri setindeki diyalogları Türkçe’ye çevirdik ve CBT (Bilişsel Davranışçı Terapi) tarzı eğitim için yeniden biçimlendirdik.”
Pull request’ler memnuniyetle karşılanır. Büyük değişiklikler için önce issue açın. Kod stili/araçları (örn. black
, ruff
) ve küçük testler önerilir.