Del via


Opret forbindelse til brugerdefinerede videnkilder

Copilot Studio indeholder indbyggede videnkilder som SharePoint og Dataverse. Mange organisationer bruger også deres egne søgeslutpunkter, f.eks. brugerdefinerede API'er, eksisterende søgesystemer til virksomheder eller Azure AI Search, samtidig med at de bevarer fuld kontrol over den forespørgsel, der udføres.

Copilot Studio understøtter dette scenarie med udløseren OnKnowledgeRequested . Alle emner, der bruger denne udløser, fungerer som en brugerdefineret videnkilde og bidrager med resultater til generative svar.

I denne artikel forklares det, hvordan du bygger og integrerer brugerdefinerede videnkilder i Copilot Studio ved hjælp af udløseren OnKnowledgeRequested . Du lærer, hvordan Copilot Studio omskriver forespørgsler, hvordan du opretter forbindelse til din egen søge-API, hvordan du formaterer resultater for generative svar og bedste praksis, når du arbejder med brugerdefineret viden.

Udløseren OnKnowledgeRequested

Brug udløseren OnKnowledgeRequested i disse to situationer:

  • Når orchestratoren bestemmer, at hentning af viden er påkrævet for at besvare en brugerforespørgsel.
  • Når en generativ svarnode udtrykkeligt aktiveres i samtalen.

Vigtigt!

Du kan kun konfigurere denne udløser i kodevisning ved hjælp af YAML. Der er ingen understøttelse af visualiseringsdesigner.

Emner, der bruger OnKnowledgeRequested , har adgang til systemvariabler, der ikke er tilgængelige i almindelige emner:

  • System.SearchQuery: En kontekstafhængig, omskrevet version af brugerens forespørgsel, der er optimeret til semantisk søgning.
  • System.KeywordSearchQuery: En omskrevet forespørgsel, der er optimeret til nøgleordsbaserede søgemaskiner.
  • System.SearchResults: Hvor emnet gemmer formaterede videnstykker.

Copilot Studio omskriver intelligent forespørgsler ved hjælp af samtalehistorikken og sikrer, at den bevarer kontekst med flere sving.

Oprettelse af en brugerdefineret videnkilde

Hvis du vil bygge en brugerdefineret videnkilde, skal du oprette et emne med udløseren OnKnowledgeRequested , der kalder din søge-API og transformerer resultater til det format, som Copilot Studio forventer.

Trin 1: Opret udløseren

Opret et nyt emne i Copilot Studio, skift til kodevisning, og definer udløseren OnKnowledgeRequested .

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

Denne struktur fortæller Copilot Studio, at dette emne er ansvarligt for at opfylde videnanmodninger.

Trin 2: Tilføj en HTTP-anmodning

Tilføj en HTTP-handling, der kalder søgeslutpunktet.

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

Sammenkæd System.KeywordSearchQuery med din grundlæggende URL-adresse, fordi Copilot Studio automatisk omskriver brugerforespørgslen med samtalekontekst, før du foretager søgeanmodningen. Dette trin er vigtigt for at bevare konteksten på tværs af samtaler med flere sving.

Tips

I stedet for en rå HTTP-anmodning kan du bruge en hvilken som helst metode, der henter resultater fra et søgeslutpunkt, herunder brugerdefinerede connectors, indbyggede connectors som Azure AI Search eller agentflows.

Eksempel på omskrivning af forespørgsel

  • Brugerforespørgsel 1: "Hvad er vores officielle dataopbevaringsperiode for kundeposter?"
  • Opfølgningsforespørgsel: "Ændres det for økonomiske oplysninger?"
  • Opfølgningsforespørgsel: "Og er der undtagelser?"

Omskrevet forespørgsel bliver: "undtagelser fra dataopbevaringspolitik for kunder og undtagelser for finansiel dataopbevaring af lovmæssige undtagelser for politikundtagelser, der håndterer retningslinjer for overholdelse af angivne standarder"

Bemærk, at den omskrevne forespørgsel:

  • Justerer "der" i henhold til politik for opbevaring af data
  • Trækker kontekst frem fra begge tidligere sving: kundedata + økonomiske data
  • Tilføjer virksomhedspolitiksprog: undtagelser, undtagelser, lovgivningsmæssige, retningslinjer

Trin 3: Transformér resultater

En brugerdefineret videnkilde skal resultere i det format, som Copilot Studio forventer. Dette format bruger:

  • Indhold: Kodestykke eller uddrag.
  • ContentLocation (valgfrit): URL-adresse.
  • Titel (valgfrit): Titel på resultatet.

Hvis du vil definere strukturen af HTTP-svaret, skal du konfigurere svarskemaet i Brugergrænsefladen i Copilot Studio.

  • Vælg Fra eksempeldata for svardatatypen.
  • Vælg Hent skema fra JSON-eksempel.
  • Indsæt JSON-eksempeldata for automatisk at generere skemaet.

Denne proces genererer svarskemaet i YAML-filen.

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

Derefter skal du transformere API'ens svar, så det stemmer overens med dette format. Tildel de transformerede data til System.SearchResults.

Eksempel på transformation

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 udfører begge handlinger:

  • Funktionen ForAll transformerer hvert søgeresultat ved at knytte snippet til Content, url til ContentLocationog title til Title.
  • Den transformerede tabel tildeles til System.SearchResults, som er den variabel, som Copilot Studio bruger til at generere svar.

Overvejelser

Vær opmærksom på disse vigtige overvejelser, når du opretter brugerdefinerede videnkilder.

Resultatgrænser

Copilot Studio bruger op til 15 kodestykker fra System.SearchResults til at generere et svar. Hvis din API returnerer flere resultater, skal du overveje:

  • Implementering af relevansscore for at returnere de bedste resultater først.
  • Begrænsning af DIT API-svar til 15 resultater.
  • Sortering af resultater efter relevans før transformation.

Flere emner om brugerdefineret viden

Du kan oprette flere emner ved hjælp OnKnowledgeRequestedaf , og hvert emne kan forespørge på forskellige backendsystemer. Copilot Studio aktiverer dem alle samtidigt, når det har brug for viden. Denne fremgangsmåde giver dig mulighed for at forespørge om forskellige søgeslutpunkter eller implementere fallback-strategier.

Advarsel!

Resultatgrænsen gælder på tværs af alle videnemner tilsammen. Hvis Emne A returnerer 10 resultater, og Emne B returnerer 8, er det kun de øverste 15 kombinerede resultater, der bruges.

Anbefalinger

  • Sortér eller scor resultater, før du returnerer dem.
  • Sørg for, at svarskemaerne er konsistente.
  • Brug tydelige emnenavne og beskrivelser. Denne praksis er nyttig, når store resultatsæt kræver relevansfiltrering.