Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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
ForAlltransformerer hvert søgeresultat ved at knyttesnippettilContent,urltilContentLocationogtitletilTitle. - 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.