Табыстар:
- Пайдаланушы рұқсатына негізделген іздеуді сүзетін кіруді басқаруды (ACL) орнатыңыз
- Мәтінмән мен пайдаланушы сұрағын дұрыс орналастыратын нақты шақыру үлгісін жазу
- Көп раундтық әңгімелерде сұрақтың тәуелсіздігі мен тарихты басқаруға машықтандыру
Біз архитектураны орнаттық; Енді оны қауіпсіз, дәйекті және сөйлесетін етіп жасайық. Бұл бөлімде үш маңызды тақырып бар: (1) пайдаланушының өкілеттілігіне негізделген іздеуді сүзгіден өткізетін кіруді басқару, (2) мәтінмән мен сұрақты дұрыс орналастыратын сенімді шақыру үлгісі, (3) көп айналымдағы чатта сұрақтың тәуелсіздігі мен сөйлесу тарихын басқару. Осы үшеуі болмаса, ассистент не деректерді ағызып жібереді, сәйкес келмейтін жауаптар береді немесе кейінгі сұрақтарға жауап бермейді.
Қол жеткізуді басқару: Рұқсат етілмеген деректер ешқашан келмеуі керек
Кәсіпорынның ең үлкен тәуекелі: пайдаланушы көрмеуі керек құжат жауапқа ағып кетеді. Бастапқыда жиі кездесетін қателік - «үлгіге сұрауда «жасырын құжаттарды көрсету» туралы айту». Бұл қауіпсіз емес. Модель нұсқаулықты ұмытып кетуі мүмкін немесе жылдам инъекция оны айналып өтуі мүмкін. Дұрыс орын - іздеу кезеңі: рұқсат етілмеген бөлікті мүлде әкелуге болмайды.
Мұны істеу жолы - іздеу кезінде сүзгі ретінде әрбір бөлікке қойған өкілетті метадеректерді (бөлім, рөл, құпиялылық деңгейі) қолдану. Қолданба деңгейінде пайдаланушының кім екенін (идентификатор және рөлдер) қауіпсіз анықтайсыз және қоңырауға ACL (Access Control List) сүзгісін қосасыз.
# Өкілетті іздеу (концептуалды) пайдаланушы бойынша сүзілген = аутентификация(сеанс) # сенімді көзден аутентификацияланған = user.roles + ["барлығы"] # мысалы. ["HR", "admin"]нәтиже = vektor_db.search(vektor=енгізу(сұрақ), top_k=20, filter={"permission_group": {"in": allow}, # тек рұқсат етілген бөліктер "privacy": {"lte": user.level}} # деңгейден төмен)
Ескерту: Ешқашан үлгіден билік сұрамаңыз немесе сұрауға сенбеңіз. Сәйкестік пен өкілеттік қолданбаның сенімді деңгейінде анықталады; Іздеу сүзгісі міндетті болып табылады, жедел нұсқау - бұл қосымша қабат. «Мен оны нұсқауда жаздым» қауіпсіздік емес.
Тұрақты шақыру үлгісі
Шақыру үлгісі контекстті, пайдаланушы сұрағын және іздеудегі мінез-құлық нұсқауларын біріктіретін қаңқа болып табылады. Жақсы үлгінің бөліктері: рөл/тапсырма сипаттамасы, мінез-құлық ережелері (негіздеу, рұқсатты білмеймін, ресурс сұрауы, үн), контекст, сұрақ.
Сіз корпоративтік HR көмекшісісіз. Сіздің жұмысыңыз ТЕК келесі КОНТЕКСТ негізінде қызметкерлердің сұрақтарына жауап беру. Ережелер:- Егер жауап контекстте анық болмаса, «Мен бұл туралы құжаттамадан ақпаратты таба алмадым, HR тобына хабарласыңыз» деп жазыңыз. Болжамдамаңыз, жалғанбаңыз.- Мәтінмәндегі дереккөздер бір-біріне қайшы келсе, ресми саясатты негізге алып, қарама-қайшылықты көрсетіңіз.- Әр мәлімдеменің соңына сенетін дереккөзді [Дереккөз: файл, бөлім] деп қосыңыз.- Қысқа, түсінікті және кәсіби тілде жауап беріңіз. МАЗМҰН:{numbered_parts}СҰРАҚ: {user_question}
Мәтінмәндік бөліктерді нөмірлеу ([1], [2], ...) үлгіге сілтеме жасауды жеңілдетеді. Сондай-ақ, модель оны дұрыс келтіре алатындай етіп, әр бөліктің басында дереккөзді жазыңыз.
Кеңес: Шақыру үлгісін тұрақты ұстаңыз және айнымалы мәндерді (мәтінмәтін, сұрақ) әрқашан бірдей орындарға орналастырыңыз. Бекітілген үлгі кейбір жүйелерде жедел кэштеу арқасында сынақ қабілеттілігін арттырады және шығындарды азайтады.
МАЗМҰН:[1] (Дереккөз: ik_el_kitabi.pdf, 5.2-бөлім) Жыл сайынғы ақылы еңбек демалысы 14 күн...[2] (Дереккөз: ik_el_kitabi.pdf, 5.4-бөлім) 5 жылдан астам еңбек өтілі бар адамдар үшін демалыс 20 күн...
Әлсіз шақыру / Күшті шақыру
Әлсіз (жерге қосылмаған, көз жоқ, сәйкестендіру араласқан):
Мына құжаттарды пайдаланып, сұраққа жауап беріңіз: {parts}Пайдаланушы: {question}# Мәселе: модель контекстен шығып кетті, құрастырады, дереккөздерге сілтеме жасамайды, # қарама-қайшылықта ерікті әрекет етеді.
Күшті (рөл + ережелер + нөмірленген контекст + міндетті дереккөз):
Сіз... Тек CONTEXT-ге сеніңіз. Әйтпесе, «білмеймін» деңіз. Қақтығыс кезінде ресми саясатты таңдаңыз. Әрбір шағымға [Дереккөз: ...] қосыңыз.МӘЗІН: [1]... [2]... СҰРАҚ: {question}# Нәтиже: мәтінмәнге сәйкес келетін, дереккөзден алынған және қайшылықты дұрыс басқаратын жауап.
Көп турлы сөйлесуді басқару
Нағыз пайдаланушы бір сұрақ қойып, оны жалғыз қалдырмайды; сөйлейді. «Менде қанша күн жыл сайынғы еңбек демалысы бар?» → «6 жылдық қызметкер туралы не деуге болады?» → «Мен оған қалай өтініш бере аламын?» Екінші және үшінші сұрақтардың өзі мағынасыз; алдыңғы контекстке байланысты.
Сізге екі мәселені шешу керек. Біріншісі іздеуге арналған: қосымша сұрақты тәуелсіз жасаңыз (сұрақты қайта жазу). «6 жылдық қызметкер ше?» → "6 жылдық жұмысшы қанша күндік жыл сайынғы еңбек демалысына құқылы?" Сіз осы тәуелсіз сұрақпен іздейсіз. Екіншісі өндіріске арналған: сіз сонымен қатар үлгіге әңгімелесу тарихын бересіз, осылайша ол дәйекті түрде жалғасады.
# Екі қадам: тәуелсіздік → іздеу → тарихпен құру (концептуалды) тәуелсіз = model.uret( "Сұрақты өздігінен түсінікті ету үшін әңгіме тарихын пайдаланыңыз:\nТарих: {history}\nСұрақ: {follow_question}") контекст = іздеу(тәуелсіз) # тәуелсіз сұрақ жауабымен іздеу = model.uret(тарих, контекст)_question
Тарих өскен сайын (ұзақ әңгіме), оның барлығын бір уақытта жіберу қымбатқа түседі және мәтінмәндік терезені толтырады. Шешуі: алдыңғы айналымдарды қорытындылаңыз немесе соңғы N айналымды қалдырыңыз және алдыңғыларды қысқаша қорытындыға келтіріңіз. Осылайша, шығындар бақылауда қалады және жүйелілік сақталады.
Күй
мәселе
Шешім
Қосымша сұрақта контекст жоқ
Іздеу мәнсіз
Сұрақты тәуелсіз ету (қайта жазу)
ұзақ сөйлесу
Құны мен терезе көтеріледі
Өткен турлардың қорытындысы
Пайдаланушы тақырыпты өзгертті
Ескі контекст жұқтырылады
Жаңа тақырыпқа өткен әсерді азайтыңыз
Билік турлар арасында әр түрлі болуы мүмкін
Ағып кету қаупі
Әр айналым сайын ACL сүзгісін қайта қолданыңыз
Үш шағын корпус
1-жағдай – «Қауіпсіздік» қатесі. Компания кез келген адам сұрай алатын ассистентке жалақы туралы құпия құжаттарды қойды, бірақ жеделхатта тек «жалақы туралы ақпаратты бермеңіз» деп жазды. Пайдаланушы сұрақты айналмалы түрде қойған кезде модель жалақы ауқымын ашты. ACL сүзгісі іздеуге қосылғанда (жалақы бөліктері тек HR рөліне), ағып кету толығымен жабылды; өйткені бөлік енді ешқашан әкелінбейді.
2-жағдай — Мәтінмәнсіз аңду. Қолдау көмекшісінде пайдаланушы «қайтару мерзімі?» деп сұрайды. → «сынған өнім ше?» Жүйе «бұзылған өнім» үшін маңызды емес бөлшектерді әкелді. Сұрақ тәуелсіздігі қосылғанда («Бұзылған өнімді қайтару мерзімі қанша?»), дұрыс жауап беру көрсеткіші 44%-дан 90%-ға дейін өсті.
3-жағдай – ісінген өткен. Көмекшімен сөйлесудің 30 раундында әрбір қоңырау бүкіл тарихты жіберді; Баға бір раунд үшін 3 есе өсіп, жауаптар баяулады. Біз соңғы 6 раундты сақтайтын және алдыңғыларын қорытындылайтын құрылымға ауысқанда, токен құны 62% -ға төмендеді және жүйелілік сақталды.
Жалпы қателер
- Өкілетті сұрауға қалдыру: Үлгі ұмытады/айналайды; ACL сүзгісі шығарып алу кезінде міндетті болып табылады.
- Мәтінмәнді санамау: Үлгі дұрыс дереккөзге сілтеме жасай алмайды.
- Кейінгі сұрақты тәуелсіз емес: Қайта іздеу мағынасыз.
- Барлық тарихты соқыр етіп жіберу: құны мен кешігуі жарылады; қорытындылау.
- Қарама-қайшылық ережесін жазбау: Модель сенімсіз дереккөзді ресми ретінде көрсетуі мүмкін.
Қысқаша айтқанда
- Қол жеткізуді басқару іздеу кезеңінде метадеректер сүзгісімен жүзеге асырылады; Рұқсат етілмеген бөлшектерді ешқашан әкелуге болмайды.
- Сәйкестік пен өкілеттілік сенімді қолданба деңгейінде анықталады; Жедел нұсқау - бұл қорғаныстың қосымша қабаты.
- Мықты шақыру үлгісі рөлді, мінез-құлық ережелерін (негіздеу, рұқсатты білмеу, дерек көзі, қайшылық), нөмірленген контекст және сұрақты қамтиды.
- Көп раундты әңгімеде қосымша сұрақтар ажыратылады және үлгі тарихпен сәйкес жауаптар береді.
- Ұзақ тарихты қорытындылау арқылы шығындар мен контекстік терезе бақылауда сақталады; ACL әр раунд сайын қайта қолданылады.
Қолданбалы тапсырма
(1) Өз көмекшіңіз үшін кемінде үш авторизация тобын анықтаңыз (мысалы, барлығы, бөлім, менеджер) және кестеге қандай құжат түрі қай топқа ашық екенін жазыңыз. (2) Жоғарыдағы сұрау үлгісін өзіңіздің рөліңіз бен үніңізге сәйкес бейімдеңіз және жазыңыз; Мәтінмәнді нөмірлендіріңіз және дереккөзді жасаңыз. (3) Үш раундтық шынайы әңгіме сценарийін жазыңыз (сұрақ → кейінгі → бақылау) және әрбір келесі сұрақтың тәуелсіз нұсқаларын қолмен жасаңыз. (4) Осы сценарийде ACL сүзгісін неліктен әр айналымда қайта қолдану керектігін бір сөйлеммен түсіндіріңіз.
бақылау парағы
- [ ] Мен қол жеткізуді басқаруды іздеу сүзгісімен жүзеге асырамын, мен тек шақыруға сенбеймін.
- [ ] Мен жерге қосуды қосамын, рұқсатты, дереккөзді және қайшылық ережесін шақыру үлгісіне білмеймін.
- [ ] Мәтінмәндік бөліктерді нөмірлеп, сілтеме жасаймын.
- [ ] Мен іздеу алдында қосымша сұрақтарды тәуелсіз жасаймын.
- [ ] Мен ұзақ сөйлесу тарихын қорытындылау арқылы баға мен терезені басқарамын.