Cırtdan: personaj dəstəkli açıq Azərbaycan dilli çatbot modeli
Cırtdan mT5-large əsasında hazırlanmış, personajı təqlid edən açıq Azərbaycan dilli çatbot modelidir: necə işləyir, necə işə salınır və hədləri.
Cırtdan 2023-cü ilin noyabrında Hugging Face-də dərc etdiyimiz açıq Azərbaycan dilli çatbot modelidir. Ona Azərbaycan dilində personajın qısa təsvirini və dialoqun başlanğıcını verirsiniz, o isə söhbəti həmin rolda davam etdirir. Bu məqalədə modelin necə öyrədildiyini, necə işə salındığını, hədlərinin nə olduğunu və bu gün biznesin istifadə etdiyi çatbotlarla əlaqəsini izah edirik.
Cırtdan nədir
- Baza model: mT5-large.
- Öyrətmə məlumatları: rus dilindən tərcümə edilmiş 1500-dən çox personajlı söhbət sessiyası.
- Öyrətmə parametrləri: 3 epoxa, batch ölçüsü 1 və 32 addımlıq qradiyent toplanması, Adafactor optimizatoru, öyrənmə sürəti 1e-4.
- Lisenziya: MIT, yəni ondan kommersiya layihələrində də istifadə etmək olar.
Cırtdan baza versiyadır. O göstərir ki, kompakt açıq model Azərbaycan dilində söhbət apara və verilmiş xarakterə sadiq qala bilər, lakin etibarlı cavablar üçün onu konkret tətbiqi tapşırıq üzərində əlavə öyrətmək lazımdır.
Necə işə salmaq olar
Əvvəlcə kitabxanaları quraşdırın; tokenizator üçün SentencePiece lazımdır:
pip install transformers[sentencepiece] torch
Model kartında aşağıdakı nümunə verilib:
import torch
from transformers import AutoTokenizer, MT5ForConditionalGeneration
model_name = 'learningmachineaz/cirtdan-azerbaijani-chatbot'
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = MT5ForConditionalGeneration.from_pretrained(model_name).to(device)
model.eval()
prompt = "<SC6>Sən bir oğlansan, müxtəlif məsələlər üzrə məsləhətçi. Çox ağıllısan. Həmsöhbətinə kömək etmək istəyirəm. Dialoqu davam et:\nHəmsöhbət: salam! necəsən?\nSən: <extra_id_0>"
input_ids = tokenizer.encode(prompt, return_tensors='pt').to(device)
out_ids = model.generate(
input_ids=input_ids,
do_sample=True,
temperature=0.9,
max_new_tokens=64,
top_p=0.85,
top_k=2,
repetition_penalty=1.2
)
output = tokenizer.decode(out_ids[0][1:])
if '</s>' in output:
output = output[:output.find('</s>')].strip()
output = output.replace('<extra_id_0>', '').strip()
output = output.split('Həmsöhbət')[0].strip()
print(output)
Prompt formatı
Prompt üç hissədən ibarətdir və model onların hamısını gözləyir:
<SC6>, ən əvvəldə gələn xidməti token.- Personaj: botun kim olduğu barədə Azərbaycan dilində bir neçə cümlə. Nümunədə: "Sən bir oğlansan, müxtəlif məsələlər üzrə məsləhətçi. Çox ağıllısan. Həmsöhbətinə kömək etmək istəyirəm."
- Dialoq:
Dialoqu davam et:, sonra söhbətin sətirləri, buradaHəmsöhbət:istifadəçi,Sən:isə botdur. Son sətirSən: <extra_id_0>modelin dolduracağı yeri göstərir.
Söhbəti davam etdirmək üçün hər yeni sətir cütünü dialoq hissəsinə əlavə edin və bütün promptu yenidən göndərin.
Nəticənin təmizlənməsi
Modelin xam çıxışında xidməti tokenlər olur, bəzən isə o, istifadəçinin növbəti sətrini də yazmağa başlayır. Buna görə kod mətni </s> işarəsində kəsir, <extra_id_0> tokenini silir və yalnız növbəti Həmsöhbət sözündən əvvəl gələn hissəni saxlayır.
Generasiya parametrləri
temperature=0.9, top_p=0.85 və top_k=2 ilə sampling cavabları canlı saxlayır, amma ən ehtimallı sözlərə yaxın; repetition_penalty=1.2 təkrarlara mane olur; max_new_tokens=64 isə çatda olduğu kimi cavabları qısa saxlayır. Sampling aktiv olduğu üçün eyni prompt hər dəfə fərqli cavab verə bilər.
Bilməli olduğunuz hədlər
- Tərcümə edilmiş məlumatlar. Öyrətmə dialoqları rus dilindən tərcümə edilib, ona görə model rus adlı insanları təqlid etməyə meyillidir.
- Baza model. Sizin tapşırığınız üzərində əlavə öyrədilmədən cavablar real müştərilər üçün kifayət qədər etibarlı deyil.
- Biznesiniz haqqında bilik yoxdur. Model yalnız öyrətmə zamanı gördüklərini bilir; qiymətlərinizi, sənədlərinizi və ya sifariş statuslarını yoxlaya bilmir.
- Qısa cavablar. Tövsiyə olunan parametrlərlə cavab ən çoxu 64 yeni tokendir.
Onu uyğunlaşdırmaq istəyirsinizsə, eyni prompt formatında yazılmış, öz sahənizə aid dialoqlar üzərində və sizin ssenarinizə uyğun personajla əlavə öyrədin.
Bu gün biznes çatbotları necə qurulur
Cırtdan tədqiqat, tədris və Azərbaycan dilində dialoqla təcrübələr üçün faydalıdır. Şirkətin real işdə istifadə etdiyi çatbot isə başqa cür qurulur. O, modelin təsadüfən yadda saxladıqlarına deyil, şirkətin öz bilik bazasına (sayt, sənədlər, cədvəllər, kataloq) əsasən cavab verir; sifarişin statusunu yoxlamaq və ya qeydiyyat yaratmaq kimi əməliyyatlar icra edə bilir; söhbəti tarixçəsi ilə birlikdə insana ötürür; onu aldadıb daxili məlumatları çıxarmaq cəhdlərindən qorunur. Belə botu bu saytdakı çatda işləyərkən görə bilərsiniz.
Sınayın və ya özünüzünkünü yaradın
Model Hugging Face-dədir, ətraflı məlumat isə layihə səhifəsindədir. Müştəriləriniz və ya əməkdaşlarınız üçün Azərbaycan dilli çatbot lazımdırsa, çatbotların yaradılması xidmətimizə baxın və ya tapşırığınızı təsvir edin.
- Hugging Face
- mT5
- Chatbot
- Azerbaijani