Tutorial: Dodaj bariery zabezpieczające polityki usług do modelu usługi

Ważna

Polityki serwisowe są w fazie beta. Unity AI Gateway jest ogólnie dostępny, ale jego możliwości beta są włączane osobno. Administrator konta musi włączyć funkcje w wersji beta Unity AI Gateway na stronie Previews w konsoli konta. Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.

Ten samouczek przeprowadza wprowadzanie barier zabezpieczających do Model Service na dwa komplementarne sposoby. W usłudze Azure Databricks mechanizmy ochronne to zasady usługi. Usługa modelowa może służyć jako warstwa pośrednia dla modelu hostowanego w Azure Databricks lub zewnętrznego dostawcy, takiego jak OpenAI, Anthropic lub Google, a oboma zarządzasz w ten sam sposób:

  • Wbudowane zasady usługi (mechanizmy ochronne): zarządzane mechanizmy kontroli udostępniane przez Azure Databricks pod kątem typowych zagrożeń, takich jak PII, niebezpieczne treści, próby jailbreaku i halucynacje. Możesz dodać go, wybierając go w interfejsie, bez konieczności pisania kodu.
  • Niestandardowe zasady usługi: funkcje SQL, które tworzysz na potrzeby reguł specyficznych dla Twojej organizacji, takich jak poufna nazwa kodowa projektu lub niedozwolony wzorzec odpowiedzi.

Aby zapoznać się z informacjami o zasadach usług, wbudowanych zabezpieczeniach oraz pełną dokumentacją tworzenia zasad, zobacz Zasady usług dla zabezpieczanych zasobów AI, Tworzenie i dołączanie zasad usług oraz Dokumentacja funkcji zasad usług.

Oba dołącza się w ten sam sposób — z karty Policies usługi modelu w interfejsie Unity AI Gateway — i można je łączyć. Azure Databricks ocenia każdy w dwóch punktach:

  • Faza wprowadzania danych (ON CALL) przed wywołaniem modelu.
  • Faza wyjściowa (ON RESULT) po odpowiedzi modelu.

W interfejsie użytkownika wybierz fazę podczas dołączania zasad. Niestandardowa zasada może również ograniczać się do jednej fazy przez rozgałęzienie na podstawie event:type.

Scenariusz: Twój zespół udostępnia model LLM za pośrednictwem usługi modelowej (main.default.team_chat), z której korzystają aplikacje i agenci. Chcesz blokować niebezpieczne lub szkodliwe treści za pomocą zarządzanego zabezpieczenia, blokować wszelkie prompty wspominające o poufnym projekcie oraz blokować odpowiedzi zawierające niebezpieczne linki, wszystko to bez zmiany kodu aplikacji.

Po ukończeniu tego samouczka będziesz mieć następujące elementy:

  • Wbudowane w usługę zabezpieczenie przed niebezpiecznymi treściami.
  • Niestandardowa polityka żądań, która blokuje poufną nazwę kodową podczas fazy wejściowej (ON CALL).
  • Niestandardowa polityka odpowiedzi, która blokuje niebezpieczne łącza w fazie wyjściowej (ON RESULT).
  • Wszystkie trzy zostały dołączone i zweryfikowane w środowisku Playground usługi modelu.

Wymagania wstępne

  • Obszar roboczy z włączonym Unity Catalog. Zobacz Rozpocznij pracę z Unity Catalog.
  • Funkcje beta Unity AI Gateway są włączone na Twoim koncie, co aktywuje zasady korzystania z usług i pozostałe możliwości wersji beta Unity AI Gateway. Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
  • Usługa modelu do zarządzania oraz EXECUTE, aby można było ją testować. Aby go utworzyć, zobacz Tworzenie i zarządzanie API modelu (usługi modelowe). Samouczek korzysta z main.default.team_chat.
  • MANAGE w usłudze Model Service, aby dołączyć zasady.
  • CREATE FUNCTION w schemacie, w którym tworzysz niestandardowe funkcje zasad (main.governance w tym samouczku).
  • W przypadku wbudowanej bariery ochronnej: model ewaluatora, który uruchamia sprawdzanie bariery ochronnej (sędzia LLM) jest wstępnie wybrany, więc nie jest wymagana żadna konfiguracja. Jeśli wybierzesz innego ewaluatora w obszarze Opcje zaawansowane, musisz CAN_QUERY go włączyć.

Krok 1. Stosowanie wbudowanej bariery ochronnej

Wbudowane bariery ochronne są zarządzane przez kontrole sędziego LLM. Wybierz jedną opcję z menu Typ guardraila; usługa modelu oceniającego, która przeprowadza sprawdzenie (sędzia LLM), jest już wstępnie wybrana. Dostępne zabezpieczenia to:

  • Niebezpieczna zawartość (system.ai.block_unsafe_content): blokuje niebezpieczną lub szkodliwą zawartość.
  • Jailbreak (system.ai.block_jailbreak): zaprzecza próbom wstrzyknięcia monitu i jailbreaku (tylko żądania).
  • Halucynacja (system.ai.block_hallucination): odrzuca odpowiedzi zawierające halucynacje (dotyczy tylko odpowiedzi).

Przymocuj barierkę zabezpieczającą niebezpieczną zawartość do swojej usługi modelowej:

  1. Na pasku bocznym obszaru roboczego kliknij pozycję Brama sztucznej inteligencji.
  2. Na karcie Modele wybierz usługę modelu (main.default.team_chat).
  3. Otwórz kartę Zasady , a następnie kliknij pozycję Nowe zasady.
  4. Wprowadź nazwę, na przykład block-unsafe-content.
  5. W obszarze Zastosowano do pozostaw opcję Wszyscy użytkownicy konta lub ogranicz zakres zasady do określonych podmiotów zabezpieczeń.
  6. W obszarze Typ zabezpieczenia wybierz Niebezpieczne treści.
  7. Ustaw pozycję Ranga na 1. Ranga ustawia kolejność oceny: najniższa ranga jest wykonywana jako pierwsza podczas przetwarzania żądania i jako ostatnia podczas przetwarzania odpowiedzi.
  8. W obszarze Faza wybierz zarówno poręcze wejściowe (przed modelem) jak i zabezpieczenia wyjściowe (po modelu), aby bariera chroniąca działała na żądaniach i odpowiedziach.
  9. Kliknij pozycję Create policy (Utwórz zasady).

Poręcz używa wstępnie wybranej usługi modelu Ewaluator (sędzia LLM, który uruchamia kontrolę). Aby użyć innego modelu, rozwiń pozycję Opcje zaawansowane przed utworzeniem zasady; musisz mieć CAN_QUERY dla wybranego modelu.

Note

Po dołączeniu lub zmianie polityki w usłudze Model Service odczekaj chwilę, aż zmiana zacznie obowiązywać, zanim rozpoczniesz testowanie. W okresie beta zasad usługi propagacja może potrwać kilka minut.

Krok 2. Dodawanie niestandardowych zasad żądania

Mechanizmy zabezpieczające dotyczą typowych ryzyk. Aby utworzyć regułę właściwą dla organizacji, napisz niestandardową zasadę. Niestandardowa polityka to funkcja UDF SQL, która przyjmuje (event VARIANT) i zwraca decyzję; odczytaj tekst wiadomości z event:context.message, czyli niezależnej od API projekcji ostatniej wiadomości użytkownika lub asystenta.

Te zasady odrzucają wszelkie żądania, które wspominają o poufnej nazwie kodu projektu. Kontrola event:type::string = 'request' ogranicza ją do fazy wejściowej (NA WEZWANIE):

CREATE OR REPLACE FUNCTION main.governance.block_confidential_codename(
  event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
  CASE
    WHEN event:type::string = 'request'
      AND contains(lower(event:context.message::string), 'project aurora')
    THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Requests about confidential projects are not permitted.'))
    ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
  END;

contains i lower są częścią podzbioru języka SQL obsługiwanego w treści zasad. Aby uzyskać pełną listę i reguły pisania funkcji zasad, zobacz Service policy function reference (Dokumentacja funkcji zasad usługi).

Dołącz funkcję jako niestandardową zasadę z zakresem ograniczonym do fazy żądania:

  1. Na karcie Zasady usługi modelowej kliknij pozycję Nowa zasada i wprowadź Nazwę, na przykład block-codename.
  2. W polu Typ barierki wybierz pozycję Niestandardowy.
  3. Kliknij pozycję Funkcja niestandardowa, a następnie wybierz pozycję Wybierz funkcję, a następnie wybierz pozycję main.governance.block_confidential_codename.
  4. W sekcji Faza wybierz tylko zabezpieczenia wejściowe (przed modelem), ponieważ są to zasady dotyczące żądań.
  5. Ustaw pozycję Ranga na 10, a następnie kliknij pozycję Utwórz zasady.

Krok 3. Dodawanie niestandardowych zasad odpowiedzi

Model może również zwracać zawartość, której nie chcesz przekazywać. Te zasady odrzucają odpowiedź zawierającą niezabezpieczony link ( http:// adres URL lub javascript: identyfikator URI). Kontrola event:type::string = 'response' ogranicza jego działanie do fazy wyjścia (ON RESULT), więc użytkownik, który jedynie wspomina o tych schematach w poleceniu, nie powoduje jej uruchomienia na etapie wejścia:

CREATE OR REPLACE FUNCTION main.governance.block_unsafe_links(
  event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
  CASE
    WHEN event:type::string = 'response'
      AND (contains(lower(event:context.message::string), 'http://')
        OR contains(lower(event:context.message::string), 'javascript:'))
    THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Response contained an insecure link and was blocked by policy.'))
    ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
  END;

Dołącz funkcję jako niestandardową zasadę, ograniczoną do fazy odpowiedzi:

  1. Na karcie Zasady kliknij pozycję Nowe zasady i wprowadź nazwę, na przykład block-unsafe-links.
  2. W polu Typ poręczy wybierz pozycję Niestandardowy, a następnie wybierz pozycję main.governance.block_unsafe_links w obszarze Funkcja niestandardowa.
  3. W sekcji Faza wybierz tylko zabezpieczenia danych wyjściowych (po modelu), ponieważ jest to zasada dotycząca odpowiedzi.
  4. Ustaw pozycję Ranga na 20, a następnie kliknij pozycję Utwórz zasady.

Krok 4. Weryfikowanie

Wszystkie trzy zasady pojawiają się teraz na karcie Zasady usługi. Użyj playgroundu, aby potwierdzić, że każda z nich się uruchamia:

  1. Na stronie usługi modelu kliknij pozycję Czat na placu zabaw.
  2. Wyślij polecenie, które żąda niebezpiecznych lub szkodliwych treści. Zabezpieczenie antybezpiecznej treści blokuje to, a odpowiedź informuje, że treść została zablokowana przez politykę.
  3. Wyślij Tell me about Project Aurora.. Zasady dotyczące żądań blokują je z następującego powodu: Żądania dotyczące poufnych projektów nie są dozwolone.
  4. Wyślij polecenie, które spowoduje, że model zwróci link http://. Polityka odpowiedzi blokuje ją na etapie wyjściowej (NA WYNIKU) z powodem, że odpowiedź zawierała niebezpieczne łącze i była blokowana przez politykę.
  5. Wyślij zwykły monit. Zwraca normalne zakończenie.

Aby przetestować usługę z własnych aplikacji lub skryptów, zobacz API modelu zapytania (usługi modelowe).

Czyszczenie

Gdy skończysz, usuń zasady na karcie Zasady : otwórz wszystkie utworzone zasady i usuń je. Następnie opcjonalnie upuść funkcje niestandardowe:

DROP FUNCTION IF EXISTS main.governance.block_confidential_codename;
DROP FUNCTION IF EXISTS main.governance.block_unsafe_links;

Następne kroki