Koble til egendefinerte kunnskapskilder

Copilot Studio inkluderer innebygde kunnskapskilder som SharePoint og Dataverse. Mange organisasjoner bruker også sine egne søkeendepunkter, som tilpassede API-er, eksisterende bedriftssøkesystemer eller Azure AI Search, samtidig som de beholder full kontroll over spørringen som kjøres.

Copilot Studio støtter dette scenarioet med OnKnowledgeRequested-utløseren. Ethvert emne som bruker denne triggeren fungerer som en tilpasset kunnskapskilde og bidrar med resultater til generativt svar.

Denne artikkelen viser hvordan du kan bygge og integrere tilpassede kunnskapskilder i Copilot Studio ved hjelp av OnKnowledgeRequested-utløseren. Du lærer hvordan Copilot Studio omskriver spørringer, kobler til ditt eget søke-API, formaterer resultater for generativt svar, og beste praksiser når du arbeider med tilpassede kunnskapskilder.

OnKnowledgeRequested-utløseren

Bruk OnKnowledgeRequested utløseren i disse to situasjonene:

  • Når iverksetteren fastslår at kunnskapsinnhenting er nødvendig for å svare på en brukerhenvendelse.
  • Når en generativ svarnode eksplisitt påkalles i samtalen.

Viktig!

Du kan bare konfigurere denne utløseren i kodevisning ved å bruke YAML. Det finnes ingen støtte for visuell designer.

Emner som bruker OnKnowledgeRequested har tilgang til systemvariabler som ikke er tilgjengelige i vanlige emner:

  • System.SearchQuery: En kontekstbevisst, omskrevet versjon av brukerens spørring som er optimalisert for semantisk søk.
  • System.KeywordSearchQuery: En omskrevet spørring som er optimalisert for nøkkelordbaserte søkemotorer.
  • System.SearchResults: Hvor emnet lagrer formaterte kunnskapsutdrag.

Copilot Studio skriver intelligent om spørringer ved å bruke samtalehistorikk, og sikrer at den bevarer konteksten over flere samtaleomganger.

Bygging av egendefinert kunnskapskilde

For å bygge en egendefinert kunnskapskilde, oppretter du et emne med OnKnowledgeRequested-utløseren som kaller søke-API-et ditt og omdanner resultatene til det formatet Copilot Studio forventer.

Trinn 1: Opprett utløseren

Opprett et nytt emne i Copilot Studio, bytt til kodevisning, og definer OnKnowledgeRequested-utløseren.

kind: AdaptiveDialog
beginDialog:
  kind: OnKnowledgeRequested
  id: main
  intent: {}
  actions:
    # Actions go here
inputType: {}
outputType: {}

Denne strukturen forteller Copilot Studio at emnet er ansvarlig for å oppfylle kunnskapsforespørsler.

Trinn 2: Legg til en HTTP-forespørsel

Legg til en HTTP-aksjon som sender en forespørsel til søkeendepunktet ditt.

Eksempel:

- 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

Konkatenér System.KeywordSearchQuery til din base-nettadresse fordi Copilot Studio automatisk omskriver brukerforespørselen med samtalekontekst før søkeforespørselen sendes. Dette trinnet er viktig for å bevare konteksten i samtaler med flere utvekslinger.

Tips

I stedet for en rå HTTP-forespørsel kan du bruke hvilken som helst metode som henter resultater fra et søkeendepunkt, inkludert egendefinerte koblinger, innebygde koblinger som Azure AI Search, eller agentflyter.

Eksempel på omskriving av søkespørring

  • Brukerspørsmål 1: "Hva er vår offisielle oppbevaringsperiode for kundedata?"
  • Oppfølgingsspørsmål: «Endres det for finansiell informasjon?»
  • Oppfølgingsspørsmål: «Og finnes det unntak?»

Omskrevet forespørsel blir: "unntak fra retningslinjer for dataoppbevaring, unntak for kunde- og finansdatalagring, regulatoriske unntak, policy, unntak, håndtering av samsvarsretningslinjer"

Legg merke til at den omskrevne forespørselen:

  • Løser «der» til dataoppbevaringspolicy
  • Henter kontekst fra begge tidligere forespørsler: kundedata + finansielle data
  • Legger til terminologi fra bedriftspolicy: unntak, fritak, regulatoriske, retningslinjer

Trinn 3: Transformer resultater

En egendefinert kunnskapskilde må generere resultater i det formatet Copilot Studio forventer. Dette formatet bruker:

  • Innhold: Tekstutdrag eller sammendrag.
  • ContentLocation (valgfritt): URL.
  • Tittel (valgfritt): Tittel på resultatet.

For å definere strukturen til HTTP-svaret, konfigurer responsskjemaet i Copilot Studio-brukergrensesnittet.

  • Velg Fra eksempeldata for svar-datatypen.
  • Velg Hent skjema fra eksempel-JSON.
  • Lim inn et eksempel-JSON for automatisk å generere skjemaet.

Denne prosessen genererer responsskjemaet i YAML-filen din.

responseSchema:
  kind: Record
  properties:
    query: String
    results:
      type:
        kind: Table
        properties:
          snippet: String
          title: String
          url: String

Deretter tilpasser du APIens respons til dette formatet. Tilordn de transformerte dataene til System.SearchResults.

Eksempel på transformasjon

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: {}

Handlingen SetVariable utfører begge operasjonene:

  • Funksjonen ForAll transformerer hvert søkeresultat, og avbilder snippet til Content, url til ContentLocation og title til Title.
  • Den transformerte tabellen tilordnes til System.SearchResults, som er variabelen Copilot Studio bruker for å generere svar.

Vurderinger

Husk disse nøkkelhensynene når du bygger egendefinerte kunnskapskilder.

Resultatbegrensninger

Copilot Studio bruker opptil 15 utdrag fra System.SearchResults for å generere et svar. Hvis API-en din returnerer flere resultater, vurder:

  • Implementering av relevansrangering for å returnere de beste resultatene først.
  • Begrens API-svaret til 15 resultater.
  • Sorter resultater etter relevans før transformasjon.

Flere egendefinerte kunnskapsemner

Du kan opprette flere emner ved å bruke OnKnowledgeRequested, og hvert emne kan forespørre forskjellige backend-systemer. Copilot Studio påkaller alle samtidig når det trengs kunnskap. Denne tilnærmingen gjør det mulig å sende forespørsler til forskjellige søkeendepunkter eller benytte fallback-strategier.

Advarsel!

Resultatbegrensningen gjelder til sammen for alle kunnskapsemner. Hvis Emne A returnerer 10 resultater og Emne B returnerer 8, brukes kun de 15 øverste samlede resultatene.

Anbefalinger

  • Sorter eller ranger resultater før du returnerer dem.
  • Sørg for at responseskjemaene er ensartede.
  • Bruk tydelige emnenavn og beskrivelser. Denne praksisen er nyttig når store resultatsett krever relevansfiltrering.