Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Copilot Studio include fonti delle informazioni integrate come SharePoint e Dataverse. Molte organizzazioni utilizzano anche i propri endpoint di ricerca, come API personalizzate, sistemi di ricerca aziendali esistenti o Azure AI Search, mantenendo il pieno controllo sulla query eseguita.
Copilot Studio supporta questo scenario con il trigger OnKnowledgeRequested. Qualsiasi argomento che utilizza questo trigger agisce come una fonte delle informazioni personalizzata e fornisce risultati per risposte generative.
Questo articolo spiega come creare e integrare fonti delle informazioni personalizzate in Copilot Studio utilizzando il trigger OnKnowledgeRequested. Puoi apprendere come Copilot Studio riscrive le query, come collegarti alla tua API di ricerca, come formattare i risultati per le risposte generative e le procedure consigliate quando si lavora con le informazioni personalizzate.
Trigger OnKnowledgeRequested
Usa il trigger OnKnowledgeRequested in queste due situazioni:
- Quando l'orchestratore determina che è necessario recuperare informazioni per rispondere a una richiesta dell'utente.
- Quando un nodo di risposta generativa viene esplicitamente invocato nella conversazione.
Importante
Puoi configurare questo trigger solo nella vista codice usando YAML. Il supporto per il la finestra di progettazione di oggetti visivi non è disponibile.
Gli argomenti che utilizzano OnKnowledgeRequested hanno accesso a variabili di sistema che non sono disponibili negli argomenti normali:
-
System.SearchQuery: una versione contestualizzata e riscritta della query dell'utente, ottimizzata per la ricerca semantica. -
System.KeywordSearchQuery: una query riscritta ottimizzata per motori di ricerca basati su parole chiave. -
System.SearchResults: dove l'argomento memorizza frammenti di conoscenza formattati.
Copilot Studio riscrive le query in modo intelligente utilizzando la cronologia della conversazione, garantendo la conservazione del contesto su più turni.
Creazione di una fonte delle informazioni personalizzata
Per creare una fonte delle informazioni personalizzata, crea un argomento con il trigger OnKnowledgeRequested che attiva il richiamo dell'API di ricerca e trasforma i risultati nel formato previsto da Copilot Studio.
Passaggio 1: creare il trigger
Crea un nuovo argomento in Copilot Studio, passa alla vista codice e definisci il trigger OnKnowledgeRequested.
kind: AdaptiveDialog
beginDialog:
kind: OnKnowledgeRequested
id: main
intent: {}
actions:
# Actions go here
inputType: {}
outputType: {}
Questa struttura indica a Copilot Studio che questo argomento è responsabile di soddisfare le richieste di conoscenza.
Passaggio 2: aggiungere una richiesta HTTP
Aggiungi un'azione HTTP che richiami il tuo endpoint di ricerca.
Esempio:
- 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
Concatena System.KeywordSearchQuery al tuo URL base perché Copilot Studio riscrive automaticamente la query utente con il contesto della conversazione prima di effettuare la richiesta di ricerca. Questo passaggio è importante per mantenere il contesto nelle conversazioni multi-turno.
Suggerimento
Invece di una semplice richiesta HTTP, puoi utilizzare qualsiasi metodo che ottenga risultati da un endpoint di ricerca, inclusi connettori personalizzati, connettori integrati come Azure AI Search o flusso dell'agente.
Esempio di riscrittura delle query
- Query utente 1: "Qual è il nostro periodo ufficiale di conservazione dei dati per i record dei clienti?"
- Query di completamento: "Cambia per informazioni finanziarie?"
- Query di follow-up: "E ci sono eccezioni?"
La query riscritta diventa: "eccezioni ai criteri di conservazione dei dati, eccezioni sulla conservazione dei dati dei clienti e finanziari, esenzioni normative, gestione delle eccezioni nella policy, linee guida sulla conformità"
Nota che la query riscritta:
- Risolve "there" nei criteri di conservazione dei dati
- Recupera il contesto da entrambe le interazioni precedenti: dati del cliente e dati finanziari
- Aggiunge la terminologia dei criteri aziendali: eccezioni, esenzioni, normative, linee guida
Passaggio 3: trasformare i risultati
Una fonte delle informazioni personalizzata deve fornire risultati nel formato richiesto da Copilot Studio. Questo formato utilizza:
- Contenuto: frammento o estratto.
- ContentLocation (facoltativo): URL.
- Titolo (facoltativo): titolo del risultato.
Per definire la struttura della risposta HTTP, configura lo schema di risposta nell'interfaccia utente di Copilot Studio.
- Seleziona Da dati campione per il tipo di dati della risposta.
- Seleziona Ottieni schema da JSON di esempio.
- Incolla il tuo payload JSON di esempio per generare automaticamente lo schema.
Questo processo genera lo schema di risposta nel tuo file YAML.
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
Successivamente, trasforma la risposta della tua API per adattarla a questo formato. Assegna i dati trasformati a System.SearchResults.
Trasformazione di esempio
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: {}
L'azione SetVariableesegue entrambe le operazioni:
- La funzione
ForAlltrasforma ciascun risultato di ricerca, mappandosnippetsuContent,urlsuContentLocationetitlesuTitle. - La tabella trasformata viene assegnata a
System.SearchResults, la variabile utilizzata da Copilot Studio per generare le risposte.
Considerazioni
Prendi in considerazione questi aspetti chiave quando crei fonti delle informazioni personalizzate.
Limiti dei risultati
Copilot Studio utilizza fino a 15 frammenti da System.SearchResults per generare una risposta. Se la tua API restituisce più risultati, considera:
- L'implementazione di un sistema di punteggio di pertinenza per restituire prima i risultati più pertinenti.
- La limitazione della risposta dell'API a 15 risultati.
- L'ordinamento dei risultati per pertinenza prima della trasformazione.
Argomenti di conoscenza personalizzati multipli
Puoi creare più argomenti usando OnKnowledgeRequested e ogni argomento può interrogare diversi sistemi back-end. Copilot Studio li richiama tutti contemporaneamente quando ha bisogno di conoscenza. Questo approccio consente di interrogare diversi endpoint di ricerca o di implementare strategie di fallback.
Avviso
Il limite dei risultati si applica complessivamente a tutti gli argomenti di conoscenza. Se l’argomento A restituisce 10 risultati e l’argomento B 8, vengono utilizzati solo i primi 15 risultati totali.
Suggerimenti
- Ordina o assegna un punteggio ai risultati prima di restituirli.
- Mantieni coerenti gli schemi di risposta.
- Utilizza nomi e descrizioni chiare per gli argomenti. Questa pratica è utile quando set di risultati estesi richiedono l'applicazione di filtri basati sulla pertinenza.