Ansluta till anpassa kunskapskällor

Copilot Studio inkluderar inbyggda kunskapskällor som SharePoint och Dataverse. Många organisationer använder också sina egna sökändpunkter, såsom anpassade API:er, befintliga företagssöksystem eller Azure AI-sökning, samtidigt som de behåller full kontroll över den sökfråga som körs.

Copilot Studio stöder detta scenario med utlösaren OnKnowledgeRequested. Varje ämne som använder denna utlösare fungerar som en anpassad kunskapskälla och bidrar med resultat till generativa svar.

Denna artikel förklarar hur du bygger och integrerar anpassade kunskapskällor i Copilot Studio med hjälp av OnKnowledgeRequested-utlösaren. Du får lära dig hur Copilot Studio skriver om sökfrågor, hur du ansluter till ditt eget sök-API, hur du formaterar resultat för generativa svar och vilka bästa praxis som gäller när du arbetar med egen kunskap.

OnKnowledgeRequested-utlösaren

Använd OnKnowledgeRequested utlösaren i dessa två situationer:

  • När orkestrering bedömer att kunskapshämtning krävs för att besvara en användarfråga.
  • När en generativt svarsnod uttryckligen anropas i konversationen.

Viktigt

Du kan endast konfigurera den här utlösaren i kodvy genom att använda YAML. Det finns inget stöd för visuell designer.

Ämnen som använder OnKnowledgeRequested har tillgång till systemvariabler som inte finns tillgängliga i vanliga ämnen:

  • System.SearchQuery: En kontextmedveten, omskriven version av användarens fråga som är optimerad för semantisk sökning.
  • System.KeywordSearchQuery: En omskriven sökfråga som är optimerad för nyckelordsbaserade sökmotorer.
  • System.SearchResults: Där ämnet lagrar formaterade kunskapsfragment.

Copilot Studio skriver intelligent om frågor med hjälp av konversationshistorik, vilket säkerställer att sammanhanget bevaras vid flera vändor.

Bygga en anpassad kunskapskälla

För att bygga en anpassad kunskapskälla skapar du ett ämne med OnKnowledgeRequestedutlösaren som anropar ditt sök-API och omvandlar resultaten till det format som Copilot Studio förväntar sig.

Steg 1: Skapa en utlösare

Skapa ett nytt ämne i Copilot Studio, gå över till kodvyn och definiera OnKnowledgeRequested-utlösaren.

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

Denna struktur talar om för Copilot Studio att detta ämne ansvarar för att hantera kunskapsförfrågningar.

Steg 2: Lägg till en HTTP-förfrågan

Lägg till en HTTP-åtgärd som anropar din söktjänst.

Exempel:

- 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

Konkatenera System.KeywordSearchQuery med din bas-URL eftersom Copilot Studio automatiskt skriver om användarfrågan med konversationskontext innan sökförfrågan skickas. Detta steg är viktigt för att upprätthålla kontext genom flera samtalsväxlingar.

Dricks

Istället för en rå HTTP-förfrågan kan du använda vilken metod som helst som hämtar resultat från ett sökgränssnitt, inklusive egna anslutningsprogram, inbyggda anslutningsprogram som Azure AI-sökning eller agentflöden.

Exempel på omskrivning av sökfrågor

  • Användarfråga 1: "Vad är vår officiella lagringsperiod för kunduppgifter?"
  • Följdfråga: "Ändras det för finansiell information?"
  • Följdfråga: "Och finns det undantag?"

Omskriven fråga blir: "undantag från datakvarhållningspolicy kund och undantag för finansiell datakvarhållning regulatoriska undantag policyundantag hantering av efterlevnadsriktlinjer"

Observera att den omskrivna sökfrågan:

  • Löser "där" i datakvarhållningsprincipen
  • Tar med sig kontext från båda tidigare turer: kunddata + finansiella data
  • Lägger till termer från företagspolicy: undantag, dispenser, regulatoriska, riktlinjer

Steg 3: Transformera resultat

En anpassad kunskapskälla måste producera utdata i det format som Copilot Studio förväntar sig. Formatet använder:

  • Innehåll: Utdrag eller exempel.
  • ContentLocation (valfritt): URL.
  • Titel (valfritt): Titeln på resultatet.

För att definiera strukturen för HTTP-svaret, konfigurera svars­schemat i Copilot Studio-användargränssnittet.

  • Välj Från exempeldata för responsdatatypen.
  • Välj Hämta schema från exempel-JSON.
  • Klistra in din exempel-JSON-payload för att automatiskt generera schemat.

Denna process genererar svarsschemat i din YAML-fil.

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

Därefter transformerar du ditt API:s svar så att det matchar detta format. Tilldela den transformerade datan till System.SearchResults.

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

Åtgärden SetVariable utför båda åtgärderna:

  • Funktionen ForAll bearbetar varje sökresultat, där snippet mappas till Content, url till ContentLocation och title till Title.
  • Den transformerade tabellen tilldelas System.SearchResults, vilket är variabeln som Copilot Studio använder för att generera svar.

Att tänka på

Ha dessa viktiga överväganden i åtanke när du skapar skräddarsydda kunskapskällor.

Resultatgränser

Copilot Studio använder upp till 15 utdrag från System.SearchResults för att generera ett svar. Om ditt API returnerar fler resultat, överväg:

  • Implementera relevansbedömning för att visa de bästa resultaten först.
  • Begränsa ditt API-svar till 15 resultat.
  • Sortera resultaten efter relevans före transformering.

Flera anpassade kunskapsämnen

Du kan skapa flera ämnen genom att använda OnKnowledgeRequested, och varje ämne kan hämta information från olika serverdelssystem. Copilot Studio anropar alla samtidigt när kunskap behövs. Detta angreppssätt gör det möjligt att fråga olika sökslutpunkter eller implementera reservstrategier.

Varning!

Resultatgränsen gäller gemensamt för alla kunskapsämnen. Om Ämne A ger 10 resultat och Ämne B 8, används endast de 15 sammanlagda resultaten.

Rekommendationer

  • Sortera eller poängsätt resultaten innan du returnerar dem.
  • Håll responsscheman konsekventa.
  • Använd tydliga ämnesnamn och beskrivningar. Denna metod är särskilt användbar när stora mängder resultat behöver filtreras utifrån relevans.