Prompting və context
Prompting və context
Language model context-dən davama gedən funksiyadırsa, prompt — proqramdır. Prompting nə fənd, nə də qara sənətdir. Bu, istədiyiniz output-un ən ehtimal olunan davam olduğu context-i qurmaq praktikasıdır.
Bu fəsil bunu şüurlu şəkildə etməkdən bəhs edir.
Prompt-un anatomiyası
Production sistemi üçün yaxşı qurulmuş prompt adətən bu hissələrdən, təxminən bu ardıcıllıqla ibarət olur:
- Rol və məqsəd. Model kimin adından çıxış edir və ümumi tapşırıq nədir.
- Qaydalar və məhdudiyyətlər. Həmişə nə etməli, heç vaxt nə etməməli, output formatı.
- İstinad materialı. Sənədlər, data, nümunələr, retrieval ilə tapılmış faktlar: grounding.
- Nümunələr. Giriş–output cütlərinin nümayişi (few-shot).
- Əsl giriş. İstifadəçinin sualı, xülasə ediləcək sənəd, review ediləcək kod.
- Output təlimatları. Format, həcm, dil, əmin olmadıqda nə etməli.
Hər prompt-a altısı da lazım deyil. Amma prompt düzgün işləməyəndə səbəb demək olar həmişə bunlardan birinin çatışmamasıdır.
Dəyişməz prinsiplər
Output-u konkret təsvir edin. "Bunu xülasə et" nəsə verir. "Bunu orijinalı oxumamış maliyyə rəhbəri üçün, 80 sözdən az, üç bəndlə xülasə et" istədiyinizi verir.
Yalnız deməyin, göstərin. Dəqiq output formatının iki-üç nümunəsi onu təsvir edən abzasdan daha yaxşı nəticə verir. Nümunələr həm də tonu və detal səviyyəsini müəyyən edir.
Təlimatları attention-ın tapacağı yerə qoyun. Modellər context-in əvvəlinə və sonuna ən etibarlı attention yetirir. Kritik qaydanı əvvələ qoyun və tapşırığı data-dan sonra, sonda yenidən ifadə edin.
Modelə düşünməyə yer verin. Bir neçə addım tələb edən hər şey üçün ondan cavabdan əvvəl reasoning istəyin. "Problemi addım-addım düşün, sonra son cavabı ver" reasoning tapşırıqlarında dəqiqliyi ölçülə bilən dərəcədə artırır. Yeni modellər bunu çox vaxt daxildə edir; çətin məsələlərdə təlimat yenə də kömək edir.
İlişib qalanda nə edəcəyini deyin. "Sənəddə cavab yoxdursa, 'Tapılmadı' yaz və təxmin etmə." Bunsuz model boşluğu inandırıcı uydurma ilə doldurur.
Data-nı təlimatlardan ayırın. İstifadəçinin verdiyi məzmunu aydın delimiter-lərə (XML tag-ləri, üçqat backtick) bükün və modelə deyin ki, içəridəki məzmun data-dır, təlimat deyil. Bu, prompt injection-a qarşı birinci müdafiə xəttidir.
Məhsul elə context-dir
Modelin weight-ləri sabitdir. Sistemi sizinki edən hər şey context-dədir: sənədləriniz, qaydalarınız, nümunələriniz, istifadəçinizin tarixçəsi. Context-i yaxşı idarə etmək AI mühəndisliyinin böyük hissəsidir.
Retrieval-augmented generation
Model daxili wiki-nizi, keçən həftənin support ticket-lərini və ya istifadəçinin hesab məlumatlarını bilə bilməz. Retrieval-augmented generation (RAG) müvafiq parçaları sorğu anında gətirib prompt-a yerləşdirir:
- Sənədlərinizi chunk-lara bölün.
- Hər chunk-ı embed edib vektora çevirin.
- Sorğu zamanı sualı embed edin, ən yaxın chunk-ları tapın və onları prompt-a daxil edin.
- Modelə verilən chunk-lara əsasən cavab verməyi və onlara istinad etməyi tapşırın.
RAG-ın keyfiyyəti modeldən çox retrieval-dan asılıdır. Düzgün chunk context-də yoxdursa, heç bir model düzgün cavab verməyəcək. Prompt-a toxunmazdan əvvəl chunking strategiyasına, hybrid search-ə (keyword üstəgəl vektor) və reranking-ə sərmayə qoyun.
Context büdcəsi
Context window-lar böyükdür və böyüməyə davam edir, amma pulsuz deyil. Daha çox token daha baha başa gəlir, daha uzun çəkir və müəyyən həddən sonra attention-ı seyrəldir. Prioritet verin:
- istifadəçinin əsl sorğusuna
- pozulmamalı qaydalara
- ən müvafiq retrieval materialına, sıralanmış şəkildə
- son söhbət tarixçəsinə, uzun olanda xülasə edilmiş halda
- nümunələrə, əgər format aşkar deyilsə
Daxil etdiyinizi ölçün. Bir çox production prompt-u heç bir testin əhəmiyyətini sübut etmədiyi minlərlə token boilerplate daşıyır.
Structured output
Output proqrama ötürüləndə struktur istəyin: elan edilmiş schema-lı JSON və ya tipləşdirilmiş parametrli tool call. Əksər model API-ləri artıq schema ilə məhdudlaşdırılmış output-u dəstəkləyir ki, bu da parsing xətalarının bütöv bir sinfini aradan qaldırır. Yenə də validate edin.
Prompt-ların evaluation-ı
Prompt koddur və kod kimi test edilməlidir.
- Məlum yaxşı output-ları olan reprezentativ girişlər toplusu qurun (50 başlanğıcdır; 500 rahatdır).
- Output-ları mümkün olan yerdə avtomatik (exact match, schema validity, tələb olunan faktların mövcudluğu), mümkün olmayan yerdə model-as-judge ilə qiymətləndirin.
- Toplunu hər prompt dəyişikliyində işə salın. Balı prompt-un yanında version control-da izləyin.
- Uğursuz halları saxlayın. Onlar sahib olduğunuz ən dəyərli nümunələrdir.
Evaluation toplusu olmadan prompt dəyişiklikləri hissiyyatdan o yana keçmir. Qarşınızdakı nümunəni düzəldən bir düzəliş baxmadığınız on nümunəni poza bilər.
Tez-tez rast gəlinən xətalar və həlləri
| Əlamət | Ehtimal olunan səbəb | Həll |
|---|---|---|
| Qaydanı nəzərə almır | Qayda prompt-un ortasında itib | Əvvələ keçirin; sonda təkrarlayın |
| Yanlış format | Format təsvir olunub, göstərilməyib | Nümunə əlavə edin; structured output işlədin |
| Uydurur | Grounding yoxdur, imtina etməyə icazə yoxdur | Retrieval əlavə edin; "tapılmadı de" əlavə edin |
| Həddən artıq uzun | Həcm məhdudiyyəti yoxdur | Həcmi və auditoriyanı göstərin |
| Nəticələr işə salmalar arasında fərqlənir | Yüksək temperature | Aşağı salın; nümunə əlavə edin |
| İstifadəçi data-sındakı təlimatlara əməl edir | Data/təlimat ayrılmayıb | Data-nı delimiter-ə bükün; təlimat olmadığını bildirin |
Düşünmək üçün
- Ən vacib prompt-unuzu götürün. Hər sətri altı hissədən biri ilə işarələyin. Hansı hissə çatışmır?
- Onun üçün üçü adversarial olmaqla on test girişi yazın. İşə salın.
- Boilerplate-in yarısını silin. Bal dəyişdimi?