Hooks (GitHub Copilot) (zapowiedź)

[Ten artykuł to dokumentacja wstępna, która może ulec zmianie].

Hak uruchamia jeden z Twoich workflow automatycznie, gdy coś się dzieje w Twoim agencie, na przykład uruchamia sesję, uruchamia narzędzie lub pojawia się błąd. Używaj hooków, gdy chcesz, aby coś działo się za każdym razem, a nie tylko wtedy, gdy agent uzna to za istotne.

Note

Framework użyty do budowy tego agenta wykorzystuje rozliczenia oparte na użytkowaniu. Używanie, budowanie, testowanie i ocenianie agentów może zużywać kredyty Copilot. Dowiedz się więcej w Przegląd rozliczeń opartych na zużyciu.

Czym są haczyki?

Haczyk składa się z dwóch części:

  • Zdarzenie: Punkt w cyklu życia agenta, którego nasłuchuje hak, na przykład Przed użyciem narzędzia.
  • Działanie: Co jest uruchamiane po wystąpieniu zdarzenia. Dziś działanie to zawsze proces pracy.

Gdy wystąpi zdarzenie, Copilot Studio wywołuje przepływ pracy powiązany z hakiem, przekazuje szczegóły dotyczące tego, co właśnie się wydarzyło, i wprowadza odpowiedź przepływu pracy z powrotem do konwersacji.

Jak haczyki różnią się od narzędzi

Zarówno hooki, jak i narzędzia uruchamiają przepływ pracy, ale są uruchamiane w różny sposób.

Situation Tool Haczyk
Co to uruchamia Agent wybiera je na podstawie nazwy i opisu narzędzia. Wydarzenie się wybucha.
Jak niezawodnie to działa Tylko wtedy, gdy agent uzna to za istotne. Za każdym razem, gdy takie zdarzenie się zdarza.
Działanie odpowiedzi Daje agentowi informacje, które może wykorzystać. Zmienia to, co agent robi dalej.

Ponieważ hak uruchamia się za każdym razem, gdy wystąpi powiązane z nim zdarzenie, dobrze nadaje się do reguł, które muszą być stosowane konsekwentnie, takich jak rejestrowanie każdego wywołania narzędzia, sprawdzanie żądania pod kątem zgodności z polityką przed uruchomieniem narzędzia lub dodawanie tych samych informacji kontekstowych na początku każdej sesji.

Ten sam workflow może być używany zarówno jako narzędzie, jak i hak, a także może być powiązany z więcej niż jednym hakiem.

Do czego można użyć haczyków

Najczęstsze zastosowania to:

  • Dodaj kontekst na początku sesji: Sprawdź region, zespół lub otwarte sprawy użytkownika i podaj agentowi te informacje przed rozpoczęciem rozmowy.
  • Sprawdź wywołanie narzędzia przed jego uruchomieniem: Sprawdź, co agent zamierza zrobić i zablokuj to, jeśli narusza zasady biznesowe.
  • Dostosuj lub zapisz wyniki narzędzia: Zredaguj wartości wrażliwe, sformatuj odpowiedź lub zapisz rekord audytu po uruchomieniu narzędzia.
  • Elegancko obsługuj błędy: Poleć agentowi, aby ponowił próbę, pominął krok lub się zatrzymał, gdy działanie narzędzia się nie powiedzie lub wystąpi błąd, oraz kontroluj komunikat wyświetlany użytkownikowi.

Dodaj haczyk

Hooki konfigurujesz z paska poleceń agenta, a nie na karcie Kompilacja.

  1. Na górnym pasku menu zaznacz trzy kropki (...), a następnie wybierz Haczyki.

    Zrzut ekranu pozycji Hooks w menu pod trzema kropkami na górnym pasku menu.

  2. W oknie Hooks wybierz Create. Jeśli agent już ma haczyki, wybierz Stwórz powyżej listy.

  3. Na stronie Dodaj hook wpisz następujące dane:

    • Typ zdarzenia: Wybierz zdarzenie cyklu życia, które uruchamia ten hak. Zobacz Obsługiwane zdarzenia hooków. Zmiana typu zdarzenia usuwa wybrany workflow, ponieważ workflow stworzony dla jednego zdarzenia nie pasuje do innego.
    • Nazwa: Wpisz nazwę opisującą działanie hooka. Copilot Studio proponuje nazwę na podstawie wybranego przez Ciebie wydarzenia, na przykład .Before a tool runs Nazwa jest wymagana i służy tylko do identyfikacji haczyka.
    • Narzędzia: Dla każdego z trzech zdarzeń narzędzia wybierz narzędzia, do których ma zastosowanie hook. To pole pojawia się tylko wtedy, gdy agent zawiera co najmniej jedno narzędzie. Aby zastosować hak do wszystkich narzędzi, zostaw pole puste.
    • Workflow: Wybierz workflow do uruchomienia. Lista pokazuje tylko przepływy pracy, których wejścia i wyjścia odpowiadają wybranemu zdarzeniu.
  4. Wybierz opcję Gotowe.

  5. Aby uratować agenta, wybierz ikonę Zapisz na górnym pasku menu.

Important

Wybranie Done dodaje hak do twojego agenta draftowego. Hak nie jest przechowywany, dopóki nie zapiszesz agenta, a nie uruchamia się dla użytkowników, dopóki nie opublikujesz zmian w swoim agencie. Zobacz sekcję Opublikuj swojego agenta.

Stwórz workflow dla hooka

Jeśli nie masz workflow dopasowanego do wydarzenia, możesz go stworzyć bez opuszczania dialogu.

  1. Na stronie Dodaj element hook, gdy opcja Typ zdarzenia jest już wybrana, wybierz Nowy przepływ pracy.

  2. Projektant przepływu pracy otwiera się z początkowym przepływem pracy dla danego zdarzenia. Zawiera już węzeł Gdy agent wywołuje przepływ z danymi wejściowymi zdarzenia oraz węzeł Odpowiedz agentowi z danymi wyjściowymi zdarzenia.

  3. Dodaj potrzebne węzły między nimi, potem wybierz ikonę Zapisz i wybierz Publikuj.

  4. Po zamknięciu projektanta przepływu pracy wracasz do strony Dodaj hook, na której nowy przepływ pracy jest już wybrany.

  5. Wybierz Gotowe, a następnie zapisz agenta.

Wskazówka

Zachowaj nazwy pól wejściowych i wyjściowych z workflow startera. Copilot Studio używa tych nazw, aby potwierdzić, że workflow pasuje do wydarzenia. Jeśli zmienisz nazwę lub usuniesz pola, workflow nie pojawia się już na liście Workflow dla tego zdarzenia.

Jeśli utworzysz workflow, który nie pasuje do wybranego wydarzenia, Copilot Studio informuje cię, że workflow nie odpowiada wejściom i wyjściam wydarzenia i nie wiąże go. Edytuj workflow, aby przywrócić oczekiwane pola, lub wybierz inny workflow.

Zarządzanie zaczepami

Aby zobaczyć wszystkie hooki dodane do agenta, wybierz trzy kropki (…) na górnym pasku menu, a następnie wybierz Hooki. Każdy hook jest wymieniony według nazwy i typu wydarzenia. Z tej listy możesz:

  • Edytuj haczyk: Zaznacz trzy kropki (...) obok haczyka, wybierz Edytuj, zmień dowolne pole, a następnie wybierz Gotowe.
  • Usuń haczyk: Wybierz trzy kropki (...) obok haczyka, a następnie wybierz Usuń.

Poprawki i usuwania dotyczą Twojego agenta draftowego. Wybierz ikonę Zapisz, aby zapisać agenta, a następnie opublikuj go, aby zastosować tę zmianę dla użytkowników.

Obsługiwane zdarzenia webhooków

Każde zdarzenie wysyła zestaw danych wejściowych do Twojego przepływu pracy i odczytuje zestaw danych wyjściowych z węzła Odpowiedz agentowi. Każde zdarzenie wysyła te same trzy sygnały:

Input Description
event Nazwa zdarzenia, taka jak PreTool. Przydatne, gdy jeden workflow obsługuje więcej niż jedno zdarzenie hooka.
timestamp Gdy agent zgłosił wydarzenie.
metadata Kontekst dotyczący rozmowy, użytkownika, kanału i agenta. Zobacz metadane wysyłane z każdym hakiem.

Tabele w tej sekcji przedstawiają dane wejściowe, które każde zdarzenie dodaje oprócz tamtych trzech. Wszystkie wyjścia są opcjonalne. Jeśli zostawisz wyjście puste, agent kontynuuje swoje domyślne zachowanie.

Metadane przesyłane z każdym webhookiem

Copilot Studio wysyła metadane jako pojedynczy obiekt przy każdym haku, niezależnie od tego, które zdarzenie je wywołuje. W projektancie przepływu pracy rozwiń metadane w selektorze zmiennych, aby użyć dowolnego z tych pól w przepływie pracy.

Pole Description
conversationId Unikalny identyfikator bieżącej sesji.
userId Identyfikator użytkownika w kanale, na którym rozmawia, na przykład jego identyfikator użytkownika Microsoft Teams. Użyj userAadObjectId do identyfikacji zalogowanego użytkownika.
userAadObjectId Identyfikator obiektu Microsoft Entra zalogowanego użytkownika.
userDisplayName Wyświetlana nazwa zalogowanego użytkownika.
channel Kanał, na którym odbywa się rozmowa, taki jak msteams.
agentId Unikalna identyfikacja agenta, który podniósł haczyk.
agentName Wyświetlaj nazwisko agenta, który podniósł haczyk.
agentSchemaName Schemat imienia agenta, który podniósł haczyk.

Używaj metadanych, gdy Twój workflow musi wiedzieć, dla kogo działają. Na przykład możesz napisać rekord audytu, który identyfikuje zarówno użytkownika, jak i agenta, lub stosować różne reguły w zależności od kanału.

Note

Każde pole metadanych może być puste. Pola użytkownika są puste, gdy osoba rozmawiająca z agentem nie jest zalogowana. Sprawdź, czy pole ma wartość, zanim Twój workflow go wykorzysta.

Start (przed pętlą)

Ucieka, gdy zaczyna się nowa rozmowa z agentem. Użyj tego, aby przekazać agentowi informacje kontekstowe przed pierwszą wiadomością użytkownika. To zdarzenie nie dodaje żadnych danych wejściowych oprócz trzech, które wysyła każde zdarzenie.

Workflow może powrócić:

Output Description
additionalContext Tekst kontekstowy przekazany modelowi na potrzeby tej sesji. Nie zostawiaj pustych dla nikogo.

Prompt użytkownika przesłany

Uruchamia się za każdym razem, gdy użytkownik wysyła wiadomość, zanim agent ją przetworzy. Użyj go do przepisywania lub standaryzacji tego, co agent otrzymuje.

Workflow obejmuje:

Input Description
prompt Tekst promptu przesłany przez użytkownika. Traktuj to jako nieufne dane wejściowe użytkownika.

Workflow może powrócić:

Output Description
modifiedPrompt Prompt zastępczy przetwarzany przez agenta zamiast tego, co wpisał użytkownik. Zostaw pusty, żeby zachować oryginał.
suppressOutput Ustaw na true, aby ukryć wyniki tej tury przed użytkownikiem.

Error

Uruchamia się, gdy agent napotyka błąd poza wywołaniem narzędzia. Użyj tego, aby określić, w jaki sposób agent wraca do działania i co jest przekazywane użytkownikowi.

Workflow obejmuje:

Input Description
error Komunikat o błędzie. Traktuj to jako nieufną treść diagnostyczną.
errorContext Miejsce wystąpienia błędu, aby przepływ pracy mógł rozgałęziać się na etapie, na którym wystąpił błąd.
recoverable Czy agent wierzy, że operacja może zostać powtórzona. Tylko porady.

Workflow może powrócić:

Output Description
errorHandling Jak postępować: retry, skip, lub abort. Pozostaw puste dla obsługi domyślnej.
retryCount Ile razy próbować ponownie. Używane tylko wtedy, gdy errorHandling jest retry.
userNotification Krótka, przyjazna dla użytkownika wiadomość wyświetlana użytkownikowi o błędzie.
suppressOutput Ustaw na true, aby ukryć wyniki tej tury przed użytkownikiem.

Przed użyciem narzędzi

Uruchamia się, zanim agent wywoła narzędzie. Użyj go do sprawdzenia połączenia względem własnych reguł, zmiany wartości przekazanych lub zablokowania połączenia. Możesz ograniczyć to zdarzenie do konkretnych narzędzi.

Workflow obejmuje:

Input Description
toolName Nazwa narzędzia, które agent ma zaraz wywołać.
parameters Argumenty, które agent chce przekazać narzędziu.

Workflow może powrócić:

Output Description
permissionDecision Ustaw na deny, aby zablokować wywołanie narzędzia. Pozostaw puste, aby na to zezwolić.
permissionDecisionReason Dlaczego połączenie zostało zablokowane. Używa się tylko przy odmowywaniu.
modifiedParameters Zamienne argumenty wywołania narzędzia. Zostaw pusty, żeby zachować oryginał.
additionalContext Dodatkowy tekst przekazywany do modelu wraz z wywołaniem narzędzia.
suppressOutput Ustaw na true, aby ukryć wyniki tego narzędzia przed użytkownikiem.

Zdarzenie „Przed użyciem narzędzia” jest jedynym zdarzeniem, które może zablokować działanie. Wszystkie pozostałe zdarzenia mogą dodawać kontekst lub zmieniać wartości, ale nie mogą zatrzymać agenta.

Po użyciu narzędzia

Uruchamia się po pomyślnym zakończeniu działania narzędzia. Użyj go, aby dostosować to, co widzi agent lub zapisać wynik gdzie indziej. Możesz ograniczyć to zdarzenie do konkretnych narzędzi.

Workflow obejmuje:

Input Description
toolName Nazwa narzędzia, które zostało właśnie uruchomione.
parameters Argumenty, z jakimi powołano to narzędzie.
result Wynik zwrócony przez narzędzie.

Workflow może powrócić:

Output Description
modifiedResult Wynik wymiany przekazany modelowi. Zostaw pusty, żeby zachować oryginał.
additionalContext Dodatkowy tekst przekazywany modelowi razem z wynikiem.
suppressOutput Ustaw na true, aby ukryć wyniki tego narzędzia przed użytkownikiem.

Po awarii narzędzia

Uruchamia się, gdy narzędzie zwraca błąd. Użyj go, aby powiedzieć agentowi, jak interpretować awarię. Możesz ograniczyć to zdarzenie do konkretnych narzędzi.

Workflow obejmuje:

Input Description
toolName Nazwa narzędzia, które zawiodło.
parameters Argumenty, z jakimi powołano to narzędzie.
error Komunikat o błędzie zwrócony przez narzędzie. Traktuj to jak nieufne treści.

Workflow może powrócić:

Output Description
additionalContext Wskazówki przekazywane modelowi wraz z niepowodzeniem. Nie zostawiaj pustych dla nikogo.

Ogranicz hook do konkretnych narzędzi

Zdarzenia przed użyciem narzędzi,po użyciu narzędzia oraz po awarii narzędzia dotyczą każdego narzędzia w agencie, chyba że zawęzisz je. W polu Narzędzia wybierz co najmniej jedno narzędzie, aby hak był uruchamiany tylko dla tych narzędzi. Zostaw pole puste, żeby uruchomić je dla wszystkich narzędzi.

Możesz połączyć oba podejścia. Na przykład hak przypisany do wszystkich narzędzi może zapisać rekord audytu dla każdego wywołania, podczas gdy drugi hak przypisany do jednego wrażliwego narzędzia stosuje dodatkową kontrolę przed uruchomieniem tego narzędzia.

Fakty, które trzeba znać

Pamiętaj o następujących zachowaniach podczas projektowania haków:

  • Hooki są przypisane do konkretnego agenta. Dodanie haka nie zmienia samego workflow, więc ten sam workflow może być współdzielony między agentami i używany jako narzędzie gdzie indziej.
  • Haki nie zatrzymują agenta, gdy zawodzi. Jeśli przepływ pracy zakończy się niepowodzeniem, przekroczy limit czasu lub zwróci coś, czego agent nie może odczytać, agent działa dalej tak, jakby hook nic nie zwrócił. Nie polegaj na haczyku jako jedynym zabezpieczeniu przed zasadami kluczowymi dla biznesu.
  • Workflow musi być opublikowany. Workflow, który jest zapisany, ale nie opublikowany, nie działa.
  • Traktuj dane jako nieufne. Prompty, wyniki narzędzi i komunikaty o błędach mogą zawierać treści, których agent nie wygenerował. Zweryfikowaj je w swoim procesie, zanim zaczniesz działać.
  • Edycja przepływu pracy wpływa na każdy hook, który z niego korzysta. Hook przechowuje referencję do przepływu pracy, a nie jego kopię.