Галоўная / Артыкулы

LangChain @dynamic_prompt для інструкцыяў сістэмы, ўсведамленых пра задачу

Адэнт Лангчэйн HR заменяе запыткі сістэмы для вылучэння часоў адпачынку, паўтарынняў і адароў на мідлвэр @dynamic_prompt з кантэкста выканання, тады як автарызацыя застаецца ў кодзе.

Выдавец: REACTAPP.TOP4 хв чытання921 слоў

Крыніцы: Dynamic Prompt Engineering in LangChain

Дэкаратар @dynamic_prompt з LangChain стварае сістэмны прампт на адказе кантэксту выканання, а не на адазе фіксаванага строку, якая ўключытая ў вызначэнне агента.

Ўжывайце яго кожны раз, калі інструкцыі павінны змяняцца залежна ад тэкушчага заведамення, ролі, корыстніка, этапы рабочага працэсу чыра налашоўкаў прыкладнення — без неабходнасці стварання оклонкавага агента для кожнай варыянтаванасці.

Конкрэты прыклад: адні хутчэйныя асістэнты карабяцца за пытаннямі, зв’язанымі з выпускамі і прасцежваннем працовай годзіны, паказвамі для працавнікаў і адароўваннямі ў хутчэйнай сферы. Той самы экземпляр агента змінюе свае сістэмныя інструкцыі ў залежнасці ад таго, якую кантэйнерную лінію адкрыў корыстнік. Модэль все рава бачыць аднае супрачыну; зміняецца толькі невідзімы сістэмны прампт.

Кантэкст выканання проты автарызаціі

Кантэкст выканання — гэта даны, якія застосунак надае для данага запуску: ключы задач, локацыя, ранг плану, флагі функцыйнаў. @dynamic_prompt чытае гэты набор і вяртае сістэмны запрос для наступнага вызову модэлю.

Гэта не механізм кантролю доступу. Перакрыцця прав належыць у шарэ застосунку або ў самых інструментах. Дэкаратар толькі формуе тое, што мае зрабіць модэль. Спалучэнне гэтых двух аспектаў — частая памылка: запрос, які кажа «ты ўпраўляючы», не надае прав на вікорыстання API ад упраўляючага.

Практычныя сітуацыі, дзе гэта дапамагае

  • Пакеты інструкцый, прызначаныя для конкрэтных задач у спільным агенце
  • Тон, глыбіна чы прыклады, налаштаваныя па ролі
  • SaaS-сервісы з разнымі тэкстамі правіл для кожнага кліента
  • Этапы робочага прайсепту, якім у серэдзіне сесіі патрэбны разныя правілы
  • Флагі функцыйнаў, якія зменяюць поведзенне модэлю без перыявкі агентаў
  • Локалізацыя інструкцый сістэмы з адкаленнем аднае графікі
  • Практычны апавод: памагчык кадровай службы з трыма задачамі

    Задачы, якія прадстаўляюцца ў інтэрфейсе:

    • Выпускны і праслуховальні час
    • Прыямы працавальнікаў
    • Адначына кадровай службы

    Ролі: працавальнік або адміністратар. Выпускны час і прыямы доступны як для працавальнікаў, так і для адміністратараў; адначына доступна толькі для адміністратараў. Гэта разлік мае значэнне для выбору месца розташоўкі кантролю.

    1. З’явіце об’ект кантэксту

    UserContext мае поля, якія запоўняеся пры запуску дапаможніка. task вялічына, якая кантролюе, які блок інструкцый вяртае @dynamic_prompt. role пераказваецца прыкладнам до запуску дапаможніка для адміністратывных задач. Адкаленне ролі ад будовальніка запрошэння спрыяе лёгкам аўдыту безпекі.

    2. Створыце запрошэнне дынамічна

    @dynamic_prompt
    def hr_dynamic_prompt(request):
        user = request.runtime.context
    
        if user.task == "leave":
            return """
    You are an HR assistant responsible for Leave and Attendance.
    
    Help the user with questions about:
    - Leave types
    - Leave balances
    - Leave application
    - Leave carry-forward
    - Attendance
    
    Answer only within the Leave and Attendance area.
    Keep the response clear and concise.
    """
    
        elif user.task == "benefits":
            return """
    You are an HR assistant responsible for Employee Benefits.
    
    Help the user with questions about:
    - Health insurance
    - Employee benefits
    - Wellness programs
    - Company benefit programs
    
    Answer only within the Employee Benefits area.
    Keep the response clear and concise.
    """
    
        elif user.task == "admin":
            return """
    You are an HR Administration assistant.
    
    Help the user with administrative HR processes such as:
    - Employee onboarding
    - Employee offboarding
    - HR documentation
    - Employee records
    - Administrative procedures
    
    Answer only within the HR Administration area.
    Keep the response clear and concise.
    """
    
        return """
    You are a general HR assistant.
    Answer the user's question clearly and concisely.
    """
    

    Дэкоратар пазначае функцыю як мідлвэр. LangChain перадае запіт да мадэлі; вы атрымляеце request.runtime.context. Калі task равнае "leave", вяртаюцца інструкцыі для выхаджання; калі равнае "benefits", — копія інформацыі пра паўстанкі; калі равнае "admin", — інструкцыі па адміністрацыі. Адна графіка агента, многа запросы сістэмы, без дублірацыі падключэнняў інструментаў.

    3. Падключыце модэль і агента ўсёўраз

    Той самы чат-модэль і агент служаць для кожнага заведамення. Зарэгіструйце hr_dynamic_prompt як мідлвэр, каб LangChain вызваў яго прымусова перад крокам з модэллю. Інструменты, памяць і калбэкі застаюцца спакушанымі — толькі прамова зменяецца.

    4. Спраўаце выборы UI да ключоў заведамення

    Просты меню спраўляе меткі, якія бачыць корыстнік, да стабільных ключоў:

    1 → leave 2 → benefits 3 → admin

    Этыя ключы стаюць полем task у об’екце кантэксту. Стабільныя ключы маюць важнае значэнне: тэкст інтэрфейсу можа змяніцца без перапісвання функцыі prompt.

    5. Разрэшэнне парадульна дэкоратару

    Контроль адміністратара выконваецца до вызову agent.invoke. Калі працавальнік выберае опцыю «Адміністрацыя кадроў», неабходна як можна раней зупініцца, паказавшы чыстае пасланне пра адміністратыўную памялку. Дынамічныя promptы зменяюць інструкцыі; яны не вялікія за права. Размясціце шлях адмовы ў кодзе прыкладнення, дзе вяліся логі і метрыкі.

    6. Перадача кантэксту ў вызов invoke

    context=UserContext(
        user_name="Nachiket",
        role="admin",
        task="leave"
    )
    

    У момент обработкі модэлю @dynamic_prompt бачыць task="leave" і вяртае пасланне сістэмы для запітаў пра відпачынак. Запыт корыстніка все роўна праходзіць як звычны паведамленне корыстніка. Кантэкст і історыя чату застаюцца аддзельна.

    7. Апранэце адказу

    print("\nAssistant:")
    print(result["messages"][-1].content)
    

    Тэкст пасляпянскага запаведзення агента — гэта тое, што вы выводзіце у консоль або прадстаўляеце ў інтэрфейсе. Звядзе тут вы можэце дадаць стрымінг, цытаты або логі вызываў інструментаў, не змянюючы сервіс мідлвэра dynamic-prompt.

    Чаму такі падход ўзрастае

    Вы ужо не трэба клонаваць агентов для кожнага відэльнага продукту. Інструкцыі застаюцца ў той жа месцы, што і функцыя мідлвэра, таму адпаведальныя за напісанне тэкста можу праверыць і зменіць ўсё ў аднам месцы. Ролі і правыя на доступ застаюцца ў кодзе прыемліка, дзе спачатку адбываюцца перагляды безпекі. Модэль завжды атрымлеў запаведзенне, прыстосаванае да тэкушчай сіткі — без неабходнасці жорсткага кодавання трохо адзінаковых агентоў чы трохо адзінаковых рэалізацый.