Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Copilot Studio zawiera wbudowane źródła wiedzy, takie jak SharePoint i Dataverse. Wiele organizacji korzysta również z własnych punktów końcowych wyszukiwania, takich jak niestandardowe API, istniejące systemy wyszukiwania korporacyjnego lub Wyszukiwanie AI platformy Azure, zachowując jednocześnie pełną kontrolę nad wykonywanym zapytaniem.
Copilot Studio wspiera ten scenariusz za pomocą wyzwalacza OnKnowledgeRequested. Każdy temat, który wykorzystuje ten wyzwalacz, działa jako niestandardowe źródło wiedzy i dostarcza wyniki do odpowiedzi generatywnych.
W tym artykule opisano, jak zbudować i zintegrować własne źródła wiedzy w Copilot Studio za pomocą wyzwalacza OnKnowledgeRequested. W artykule dowiesz się, jak Copilot Studio przepisuje zapytania, jak połączyć się z własnym interfejsem API wyszukiwania, jak formatować wyniki dla odpowiedzi generatywnych oraz jakie są najlepsze praktyki dotyczące pracy z niestandardową wiedzą.
Wyzwalacz OnKnowledgeRequested
W tych dwóch sytuacjach należy użyć wyzwalacza OnKnowledgeRequested:
- Gdy orkiestrator decyduje, że do odpowiedzi na zapytanie użytkownika potrzebne jest pozyskanie wiedzy.
- Gdy w rozmowie zostanie wyraźnie wywołany węzeł odpowiedzi generatywnej.
Ważne
Ten wyzwalacz można skonfigurować tylko w widoku kodu przy użyciu YAML. Nie ma wsparcia dla wizualnego projektanta.
Tematy, które korzystają z OnKnowledgeRequested, mają dostęp do zmiennych systemowych, które nie są dostępne w zwykłych tematach:
-
System.SearchQuery: Świadoma kontekstu, przepisana wersja zapytania użytkownika, zoptymalizowana pod kątem wyszukiwania semantycznego. -
System.KeywordSearchQuery: Przeredagowane zapytanie zoptymalizowane pod kątem wyszukiwarek opartych na słowach kluczowych. -
System.SearchResults: Miejsce, w którym temat przechowuje sformatowane fragmenty wiedzy.
Copilot Studio inteligentnie przepisuje zapytania przy użyciu historii konwersacji, zapewniając, że zachowuje kontekst wielozakresowy.
Tworzenie niestandardowego źródła wiedzy
Aby tworzyć niestandardowe źródło wiedzy, należy utworzyć temat z wyzwalaczem OnKnowledgeRequested, który wywołuje API wyszukiwania i przekształca wyniki do formatu oczekiwanego przez Copilot Studio.
Krok 1: Utwórz wyzwalacz
Utwórz nowy temat w Copilot Studio, przejdź do widoku kodu, i zdefiniuj wyzwalacz OnKnowledgeRequested.
kind: AdaptiveDialog
beginDialog:
kind: OnKnowledgeRequested
id: main
intent: {}
actions:
# Actions go here
inputType: {}
outputType: {}
Ta struktura informuje Copilot Studio, że ten temat jest odpowiedzialny za spełnianie żądań wiedzy.
Krok 2: Dodaj żądanie HTTP
Dodaj akcję HTTP, która wywołuje punkt końcowy wyszukiwania.
Przykład:
- kind: HttpRequestAction
id: searchRequest
url: = "https://search-api.contoso.com/search?q=" & System.KeywordSearchQuery
response: Topic.searchResults
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
Dołącz System.KeywordSearchQuery do swojego bazowego adresu URL, ponieważ Copilot Studio automatycznie modyfikuje zapytanie użytkownika, uwzględniając kontekst rozmowy, przed wysłaniem żądania wyszukiwania. Ten krok jest ważny, aby zachować kontekst w konwersacjach wieloetapowych.
Wskazówka
Zamiast surowego żądania HTTP możesz użyć dowolnej metody otrzymywania wyników z punktu końcowego wyszukiwania, w tym niestandardowych łączników, wbudowanych łączników, takich jak Wyszukiwanie AI platformy Azure lub przepływów agentów.
Przykład przepisywania zapytań
- Zapytanie użytkownika 1: „Jaki jest nasz oficjalny okres przechowywania danych klientów?”
- Zapytanie uzupełniające: „Czy zmienia się to w przypadku informacji finansowych?”
- Pytanie uzupełniające: „I czy istnieją wyjątki?”
Przeredagowane zapytanie wygląda następująco: „wyjątki od zasad przechowywania danych, wyjątki dotyczące przechowywania danych klientów i danych finansowych, wyłączenia regulacyjne, obsługa wyjątków w ramach zasad, wytyczne dotyczące zgodności”
Zauważ, że przekształcone zapytanie:
- Rozwiązuje odniesienie „tam” na zasadę przechowywania danych
- Uwzględnia kontekst z obu poprzednich tur rozmowy: dane klientów + dane finansowe
- Dodaje terminologię polityk przedsiębiorstwa: wyjątki, zwolnienia, regulacyjne, wytyczne
Krok 3: Przekształcenie wyników
Niestandardowe źródło wiedzy musi zwracać wyniki w formacie oczekiwanym przez Copilot Studio. W tym formacie stosuje się:
- Treść: Fragment lub wycinek.
- ContentLocation (opcjonalnie): URL.
- Tytuł (opcjonalnie): Tytuł wyniku.
Aby zdefiniować strukturę odpowiedzi HTTP, skonfiguruj schemat odpowiedzi w interfejsie użytkownika Copilot Studio.
- Wybierz Z przykładowych danych jako typ danych odpowiedzi.
- Wybierz Pobierz schemat z przykładowego JSON.
- Wklej przykładowe dane JSON, aby system automatycznie wygenerował schemat odpowiedzi.
Proces ten generuje schemat odpowiedzi w pliku YAML.
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
Następnie przekształć odpowiedź swojego API, aby pasowała do tego formatu. Przypisz przekształcone dane do System.SearchResults.
Przykład transformacji
kind: AdaptiveDialog
beginDialog:
kind: OnKnowledgeRequested
id: main
intent: {}
actions:
- kind: HttpRequestAction
id: searchRequest
url: ="https://search-api.contoso.com/search?q=" & System.KeywordSearchQuery
response: Topic.searchResults
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
- kind: SetVariable
id: setSearchResults
variable: System.SearchResults
value: |-
=ForAll(Topic.searchResults.results,
{
Content: snippet,
ContentLocation: url,
Title: title
})
inputType: {}
outputType: {}
Działanie wykonuje SetVariable obie operacje:
- Funkcja
ForAllprzekształca każdy wynik wyszukiwania, mapującsnippetnaContent,urlnaContentLocationoraztitlenaTitle. - Przekształcona tabela jest przypisana do
System.SearchResults, która jest zmienną używaną przez Copilot Studio do generowania odpowiedzi.
Kwestie wymagające rozważenia
Miej te kluczowe kwestie na uwadze, budując niestandardowe źródła wiedzy.
Limity wyników
Copilot Studio wykorzystuje do 15 fragmentów z System.SearchResults do generowania odpowiedzi. Jeśli interfejs API zwraca więcej wyników, rozważ:
- Wdrożenie oceniania istotności, aby najpierw zwracać najlepsze wyniki.
- Ogranicz odpowiedź interfejsu API do 15 wyników.
- Sortowanie wyników według trafności przed transformacją.
Wiele tematów wiedzy niestandardowej
Możesz utworzyć wiele tematów za pomocą OnKnowledgeRequested, a każdy temat może odpytywać różne systemy zaplecza. Copilot Studio wywołuje je wszystkie równocześnie, gdy potrzebuje wiedzy. Takie podejście pozwala na zapytania do różnych punktów końcowych wyszukiwania lub wdrażanie strategii rezerwowych.
Ostrzeżenie
Limit wyników obowiązuje we wszystkich tematach wiedzy łącznie. Jeśli Temat A zwraca 10 wyników, a Temat B 8, zostanie użytych tylko łącznie 15 najlepszych wyników.
Rekomendacje
- Posortuj lub przypisz ocenę wynikom przed ich zwróceniem.
- Utrzymuj spójność schematów odpowiedzi.
- Używaj jasnych nazw tematów i opisów. Ta praktyka jest przydatna, gdy duże zbiory wyników wymagają filtrowania pod względem relewancji.