Połącz się z niestandardowymi źródłami wiedzy

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 ForAll przekształca każdy wynik wyszukiwania, mapując snippet na Content, url na ContentLocation oraz title na Title.
  • 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.