Добици:
- Подесите контролу приступа (АЦЛ) која филтрира преузимање на основу овлашћења корисника
- Писање чврстог шаблона упита који исправно поставља контекст и корисничко питање
- Вежбање питања независности и управљања историјом у вишекружним разговорима
Успоставили смо архитектуру; Хајде сада да буде безбедно, доследно и разговорно. Постоје три критичне теме у овој јединици: (1) контрола приступа која филтрира проналажење на основу ауторитета корисника, (2) робусни шаблон за промпт који исправно поставља контекст и питање, (3) независност питања и управљање историјом разговора у разговору са више кругова. Без ова три, асистент ће или процурити податке, дати недоследне одговоре или ће се распасти на накнадним питањима.
Контрола приступа: Неовлашћени подаци никада не би требало да стигну
Највећи ризик предузећа: Документ који корисник не би требало да види пропушта у одговор. Веома честа почетничка грешка је „да кажете моделу да 'покаже скривене документе' на промпту. Ово није безбедно. Модел може заборавити инструкцију или је хитна ињекција може избећи. Право место је фаза преузимања: неовлашћени комад уопште не треба уносити.
Начин да то урадите је да примените метаподатке ауторитета (одељење, улога, ниво приватности) које сте ставили на сваки део као филтер током претраге. Безбедно одређујете ко је корисник (идентитет и улоге) на слоју апликације и позиву додајете филтер АЦЛ (Листа контроле приступа).
# Филтриран по ауторитету преузимања (концептуални)усер = аутхентицате(сессион) # аутхентицатед фром трустед соурце = усер.ролес + ["сви"] # нпр. ["ХР", "админ"]ресулт = вектор_дб.сеарцх( вектор=ембед(куестион), топ_к=20, филтер={"пермиссион_гроуп": {"ин": дозвољено}, # само дозвољени делови "приваци": {"лте": усер.левел}} # испод нивоа)
Опрез: Никада немојте тражити од модела ауторитет или се ослањати на упит. Идентитет и овлашћење се одређују на поузданом слоју апликације; Филтер за проналажење је обавезан, брза инструкција је само додатни слој. „Написао сам то у промпту“ није сигурност.
Солид Промпт Темплате
Шаблон упита је скелет који обједињује контекст, корисничко питање и упутства о понашању из преузимања. Делови доброг шаблона: опис улоге/задатка, правила понашања (утемељење, не знам дозволу, захтев за ресурсе, тон), контекст, питање.
Ви сте корпоративни ХР асистент. Ваш посао је да одговарате на питања запослених САМО на основу следећег КОНТЕКСТА. Правила:- Ако одговор није јасан у контексту напишите „Нисам могао да пронађем информацију о овоме у документацији, проверите са ХР тимом“. Не погађајте, не измишљајте.- Ако се извори у контексту сукобљавају, узмите званичну политику као основу и наведите противречност.- Додајте извор на који се ослањате као [Извор: фајл, одељак] на крају сваке тврдње.- Одговорите кратким, јасним и професионалним језиком. КОНТЕКСТ:{нумберед_партс}ПИТАЊЕ: {усер_куестион}
Нумерисањем делова контекста ([1], [2], ...) је лакше цитирати модел. Такође, напишите извор на почетку сваког дела како би га модел могао исправно цитирати.
Савет: Одржавајте шаблон упита константним и увек постављајте променљиве (контекст, питање) на иста места. Фиксни шаблон истовремено повећава могућност тестирања и смањује трошкове захваљујући брзом кеширању у неким системима.
КОНТЕКСТ:[1] (Извор: ик_ел_китаби.пдф, одељак 5.2) Годишње плаћено одсуство је 14 дана...[2] (Извор: ик_ел_китаби.пдф, одељак 5.4) Одсуство је 20 дана за особе са више од 5 година стажа...
Слаба порука / јака промпт
Слаб (без уземљења, без извора, помешан идентитет):
Користите ове документе и одговорите на питање: {партс}Корисник: {куестион}# Проблем: модел излази из контекста, измишља, не цитира изворе, # понаша се произвољно у супротности.
Јака (улога + правила + нумерисани контекст + извор обавезан):
Ви сте... Само се ослоните на КОНТЕКСТ. У супротном, реците „не знам“. У сукобу, изаберите званичну политику. Додајте [Извор: ...] свакој тврдњи. КОНТЕКСТ: [1]... [2]... ПИТАЊЕ: {питање}# Резултат: одговор који је веран контексту, настао и правилно управља контрадикцијом.
Управљање разговором у више обилазака
Прави корисник не поставља ниједно питање и не оставља га на миру; говори. „Колико дана имам годишњег одмора?“ → „Шта је са 6-годишњим запосленим?“ → „Како да се пријавим за то?“ Само друго и треће питање су бесмислене; зависи од претходног контекста.
Треба да решите два проблема. Први је за проналажење: учините следеће питање независним (поновно писање питања). „Шта је са 6-годишњим запосленим?“ → „На колико дана годишњег одмора има право запослени од 6 година?“ Тражите са овим независним питањем. Други је за производњу: такође дајете историју разговора моделу како би се она наставила доследно.
# У два корака: независно → тражи → генерише са историјом (концептуално) независно = модел.урет( "Користите историју разговора да питање буде разумљиво само по себи:\нИсторија: {историја}\нПитање: {прати_питање}") контекст = проналажење(независно) # претрага са независним одговором на питање = модел.урет(промпт)
Како историја расте (дугачак разговор), слање свега по једном постаје скупо и испуњава прозор контекста. Решење: сумирајте претходне рунде или задржите последњих Н кругова и сведите претходне на резиме. Дакле, трошкови остају под контролом и конзистентност се одржава.
Статус
проблем
Решење
Накнадно питање нема контекст
Потрага за проналажење је бесмислена
Учините питање независним (препишите)
дуго ћаскање
Трошкови и прозори се повећавају
Резиме прошлих путовања
Корисник је променио тему
Стари контекст се инфицира
Смањите утицај прошлости на нову тему
Овлашћење се може разликовати између обилазака
Ризик од цурења
Поново примените АЦЛ филтер сваке рунде
Три мини кућишта
Случај 1 — „Безбедносна“ грешка са промптом. Компанија је ставила поверљиве документе о платама на помоћника које је свако могао да пита, али је само написала „немој давати податке о плати“ на упиту. Модел је открио распон плата када је корисник поставио питање на заобилазни начин. Када је АЦЛ филтер додат преузимању (делови плате само за улогу ХР), цурење је потпуно затворено; јер се част никад више не доноси.
Случај 2 — Ухођење без контекста. У помоћнику за подршку, корисник пита "период поврата?" → „шта је са поквареним производом?“ Систем је донео небитне делове за „покварени производ”. Када се дода независност питања („Колико је дуг период враћања поквареног производа?“), стопа тачних одговора је порасла са 44% на 90%.
Случај 3 — Отечена прошлост. У 30 рунди ћаскања са асистентом, сваки позив је послао целу историју; Цена се повећавала 3 пута по рунди, а одговори су се успоравали. Када смо прешли на структуру која је задржала последњих 6 рунди и сумирала претходне, цена токена је опала за 62% и конзистентност је задржана.
Уобичајене грешке
- Остављање овлашћења промпту: Модел заборавља/заобилази; АЦЛ филтер је обавезан при преузимању.
- Не набрајање контекста: Модел не може да цитира тачан извор.
- Независност од накнадног питања: бесмислене претраге тражења.
- Слање све историје на слепо: Експлодира у цени и кашњењу; резимирати.
- Не писати правило контрадикторности: модел може приказати непоуздан извор као званичан.
Укратко
- Контрола приступа се имплементира помоћу филтера метаподатака током фазе преузимања; Неовлашћене делове никада не треба доносити.
- Идентитет и овлашћење се одређују на слоју апликације од поверења; Брза инструкција је само додатни слој одбране.
- Робустан шаблон за промпт укључује улогу, правила понашања (утемељење, не знам дозволу, извор, сукоб), нумерисани контекст и питање.
- У разговору у више кругова, додатна питања су одвојена и модел даје конзистентне одговоре са историјом.
- Сумирајући дугу историју, оквир трошкова и контекста се држи под контролом; АЦЛ се поново примењује сваке рунде.
Задатак апликације
(1) Дефинишите најмање три ауторизационе групе за сопственог помоћника (нпр. сви, одељење, менаџер) и напишите у табели који тип документа је за коју групу отворен. (2) Прилагодите и напишите горњи шаблон упита у складу са својом улогом и тоном; Нека контекст буде нумерисан и извор. (3) Напишите реалистичан сценарио разговора у три круга (питање → наставак → наставак) и ручно генеришите независне верзије сваког додатног питања. (4) Објасните у једној реченици зашто АЦЛ филтер треба поново применити сваки круг у овом сценарију.
контролна листа
- [ ] Примењујем контролу приступа са филтером за преузимање, само се не ослањам на промпт.
- [ ] Додајем уземљење, не знам дозволу, извор и правило конфликта у свој шаблон упита.
- [ ] Дајем делове контекста нумерисане и референциране.
- [ ] Независна сам додатна питања пре преузимања.
- [ ] Управљам трошковима и прозорима тако што сумирам дугу историју разговора.