Skip to content

Syntax-Turkiye/TerapAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TerapAI

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.


Model Oluşturma Aşamaları

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)

İçindekiler


Kurulum

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

Repo Yapısı

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               

Kısaca Ne Yaptık?

Aşağıdaki komutlar örnektir; gerçek argümanları modül README’lerinde bulabilirsiniz.

1) Veri Çevirme ve Formatlama

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

2) Eğitilmiş Modeli Çalıştırma

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))

Modüller & Dokümantasyon


Veri Biçimleri

  • translated (JSONL): dialogue/role/content/pointers/...

  • formatted (JSONL): tekdüzen şema

    • chat: { "messages": [{"role":"user","content":"..."},{"role":"assistant","content":"..."}] }
    • SFT: { "instruction":"...", "input":"...", "output":"..." }
  • finetune: seçili chat template’e uyumlu, temizlenmiş kayıtlar

Tam şema ayrıntıları modül README’lerinde yer alır.


Sorun Giderme

  • 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.

Lisans ve Atıflar

  • 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.”


Katkı

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.

About

#tddi2025

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •