Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Copilot Studio inclut des sources de connaissances intégrées telles que SharePoint et Dataverse. De nombreuses organisations utilisent également leurs propres points de terminaison de recherche, tels que des API personnalisées, des systèmes de recherche d’entreprise existants ou Azure AI Search, tout en conservant un contrôle total sur la requête exécutée.
Copilot Studio prend en charge ce scénario avec le déclencheur OnKnowledgeRequested. Toute rubrique qui utilise ce déclencheur agit comme une source de connaissances personnalisée et contribue aux résultats aux réponses génératives.
Cet article explique comment créer et intégrer des sources de connaissances personnalisées dans Copilot Studio à l’aide du OnKnowledgeRequested déclencheur. Vous découvrez comment Copilot Studio réécrit des requêtes, comment se connecter à votre propre API de recherche, mettre en forme les résultats pour les réponses génératives et les meilleures pratiques lors de l’utilisation de connaissances personnalisées.
Déclencheur OnKnowledgeRequested
Utilisez le OnKnowledgeRequested déclencheur dans ces deux situations :
- Lorsque l’orchestrateur détermine que la récupération des connaissances est nécessaire pour répondre à une requête utilisateur.
- Lorsqu’un nœud de réponses génératives est explicitement appelé dans la conversation.
Important
Vous pouvez uniquement configurer ce déclencheur en mode code à l’aide de YAML. Il n’existe aucune prise en charge du concepteur visuel.
Les rubriques qui utilisent OnKnowledgeRequested ont accès aux variables système qui ne sont pas disponibles dans les rubriques régulières :
-
System.SearchQuery: version réécrite de la requête de l’utilisateur optimisée pour la recherche sémantique. -
System.KeywordSearchQuery: requête réécrite optimisée pour les moteurs de recherche basés sur des mots clés. -
System.SearchResults: Où la rubrique stocke les extraits de connaissances mis en forme.
Copilot Studio réécrit intelligemment les requêtes à l’aide de l’historique des conversations, ce qui permet de préserver le contexte de plusieurs échanges.
Création d’une source de connaissances personnalisée
Pour créer une source de connaissances personnalisée, vous créez une rubrique avec le OnKnowledgeRequested déclencheur qui appelle votre API de recherche et transforme les résultats dans le format attendu par Copilot Studio.
Étape 1 : Créer le déclencheur
Créez une rubrique dans Copilot Studio, basculez vers la vue de code et définissez le OnKnowledgeRequested déclencheur.
kind: AdaptiveDialog
beginDialog:
kind: OnKnowledgeRequested
id: main
intent: {}
actions:
# Actions go here
inputType: {}
outputType: {}
Cette structure indique à Copilot Studio que cette rubrique est chargée de répondre aux demandes de connaissances.
Étape 2 : Ajouter une requête HTTP
Ajoutez une action HTTP qui appelle votre point de terminaison de recherche.
Exemple :
- 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
Concaténer System.KeywordSearchQuery à votre URL de base, car Copilot Studio réécrit automatiquement la requête utilisateur avec le contexte de conversation avant d’effectuer la requête de recherche. Cette étape est importante pour maintenir le contexte entre les conversations à plusieurs étapes.
Tip
Au lieu d’une requête HTTP brute, vous pouvez utiliser n’importe quelle méthode qui obtient des résultats à partir d’un point de terminaison de recherche, y compris des connecteurs personnalisés, des connecteurs intégrés tels qu’Azure AI Search ou des flux d’agent.
Exemple de réécriture de requête
- Requête utilisateur 1 : « Quelle est notre période de rétention officielle des données pour les enregistrements clients ? »
- Requête de suivi : « Est-ce que cela change pour les informations financières ? »
- Requête de suivi : « Et y a-t-il des exceptions ? »
La requête réécrite devient : « exceptions à la politique de rétention des données client et exceptions de rétention des données financières, exemptions réglementaires, gestion des exceptions, directives de conformité »
Notez que la requête réécrite :
- Résout « there » en stratégie de conservation des données
- Met en avant le contexte des deux interactions précédentes : données client + données financières
- Ajoute le langage de stratégie d’entreprise : exceptions, exemptions, réglementation, instructions
Étape 3 : Transformer les résultats
Une source de connaissances personnalisée doit générer des résultats dans le format attendu par Copilot Studio. Ce format utilise :
- Contenu : Extrait ou extrait de texte.
- ContentLocation (facultatif) : URL.
- Titre (facultatif) : titre du résultat.
Pour définir la structure de la réponse HTTP, configurez le schéma de réponse dans l’interface utilisateur de Copilot Studio.
- Sélectionnez Parmi les exemples de données pour le type de données de réponse.
- Sélectionnez Obtenir le schéma à partir de l’exemple JSON.
- Collez votre exemple de charge utile JSON pour générer automatiquement le schéma.
Ce processus génère le schéma de réponse dans votre fichier YAML.
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
Ensuite, transformez la réponse de votre API pour qu’elle corresponde à ce format. Affectez les données transformées à System.SearchResults.
Exemple de 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: {}
L’action SetVariable effectue les deux opérations :
- La
ForAllfonction transforme chaque résultat de recherche, en mappantsnippetContent,urlenContentLocationettitleenTitle. - La table transformée est affectée à
System.SearchResults, qui est la variable Que Copilot Studio utilise pour générer des réponses.
Considérations
Gardez ces considérations clés à l’esprit lorsque vous créez des sources de connaissances personnalisées.
Limites des résultats
Copilot Studio utilise jusqu’à 15 extraits de System.SearchResults code pour générer une réponse. Si votre API retourne d’autres résultats, envisagez les éléments suivants :
- Le scoring de pertinence est implémenté pour retourner d'abord les meilleurs résultats.
- Limitation de la réponse de votre API à 15 résultats.
- Tri des résultats par pertinence avant la transformation.
Plusieurs sujets de connaissances personnalisées
Vous pouvez créer plusieurs rubriques à l’aide OnKnowledgeRequestedde , et chaque rubrique peut interroger différents systèmes back-end. Copilot Studio les appelle simultanément lorsqu’il a besoin de connaissances. Cette approche vous permet d’interroger différents points de terminaison de recherche ou d’implémenter des stratégies de secours.
Avertissement
La limite de résultats s’applique à toutes les rubriques de connaissances combinées. Si la rubrique A retourne 10 résultats et que la rubrique B retourne 8, seuls les 15 premiers résultats combinés sont utilisés.
Recommendations
- Triez ou notez les résultats avant de les retourner.
- Maintenir la cohérence des schémas de réponse.
- Utilisez des noms de rubriques et des descriptions clairs. Cette pratique est utile lorsque les jeux de résultats volumineux nécessitent un filtrage de pertinence.