หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Copilot Studio มีแหล่งความรู้สำเร็จรูป เช่น SharePoint และ Dataverse หลายองค์กรยังใช้จุดสิ้นสุดการค้นหาของตนเอง เช่น API แบบกำหนดเอง ระบบการค้นหาขององค์กรที่มีอยู่ หรือ Azure AI Search ในขณะที่ยังคงควบคุมคิวรีที่ดำเนินการได้อย่างเต็มที่
Copilot Studio รองรับสถานการณ์นี้ด้วยทริกเกอร์ OnKnowledgeRequested หัวข้อใดๆ ที่ใช้ทริกเกอร์นี้จะทำหน้าที่เป็นแหล่งความรู้แบบกำหนดเองและมีส่วนร่วมในผลลัพธ์ของคำตอบที่สร้างโดยอัตโนมัติ
บทความนี้อธิบายวิธีการสร้างและผสานแหล่งความรู้แบบกำหนดเองใน Copilot Studio ด้วยการใช้ทริกเกอร์ OnKnowledgeRequested คุณจะได้เรียนรู้วิธีที่ Copilot Studio ปรับแต่งคำค้นหา วิธีเชื่อมต่อกับ API สำหรับการค้นหาของคุณเอง วิธีจัดรูปแบบผลลัพธ์เพื่อใช้กับคำตอบที่สร้างโดยอัตโนมัติ และแนวทางปฏิบัติที่ดีที่สุดในการใช้งานแหล่งความรู้แบบกำหนดเอง
ทริกเกอร์ OnKnowledgeRequested
ใช้ทริกเกอร์ OnKnowledgeRequested ในสองกรณีนี้:
- เมื่อแอปพลิเคชันประสานการทำงานของระบบกำหนดว่าจำเป็นต้องดึงข้อมูลความรู้เพื่อตอบคำถามของผู้ใช้
- เมื่อ โหนดคำตอบที่สร้างโดยอัตโนมัติ ถูกเรียกใช้อย่างเจาะจงในการสนทนา
สำคัญ
คุณสามารถกำหนดค่าทริกเกอร์นี้ได้เฉพาะใน มุมมองโค้ด โดยใช้ YAML เท่านั้น ไม่มีการรองรับเครื่องมือออกแบบการแสดงผลด้วยภาพ
หัวข้อที่ใช้ OnKnowledgeRequested สามารถเข้าถึงตัวแปรระบบที่ไม่พร้อมใช้งานในหัวข้อปกติ:
-
System.SearchQuery: เวอร์ชันที่เขียนใหม่และรับรู้บริบทของการสอบถามของผู้ใช้ที่ปรับให้เหมาะสมสำหรับการค้นหาเชิงความหมาย -
System.KeywordSearchQuery: คำค้นที่เขียนใหม่ซึ่งได้รับการปรับแต่งเพื่อเครื่องมือค้นหาคำสำคัญ -
System.SearchResults: ตำแหน่งที่หัวข้อเก็บส่วนข้อมูลความรู้ที่จัดรูปแบบแล้ว
Copilot Studio เขียนคำค้นหาใหม่อย่างชาญฉลาดโดยใช้ประวัติการสนทนา เพื่อให้มั่นใจว่าจะรักษาบริบทแบบหลายเทิร์น
การสร้างแหล่งความรู้แบบกำหนดเอง
เพื่อสร้างแหล่งความรู้แบบกำหนดเอง คุณต้องสร้างหัวข้อที่มีทริกเกอร์ OnKnowledgeRequested ซึ่งเรียก API การค้นหาของคุณและแปลงผลลัพธ์ให้อยู่ในรูปแบบที่ Copilot Studio คาดหวัง
ขั้นตอนที่ 1: สร้างทริกเกอร์
สร้างหัวข้อใหม่ใน Copilot Studio แล้วเปลี่ยนไปใช้มุมมองโค้ด จากนั้นกำหนดทริกเกอร์ OnKnowledgeRequested
kind: AdaptiveDialog
beginDialog:
kind: OnKnowledgeRequested
id: main
intent: {}
actions:
# Actions go here
inputType: {}
outputType: {}
โครงสร้างนี้บอก Copilot Studio ว่าหัวข้อนี้มีหน้าที่รับผิดชอบในการตอบสนองต่อคำขอความรู้
ขั้นตอนที่ 2: เพิ่มคำขอ HTTP:
เพิ่มการดำเนินการ HTTP ที่เรียกปลายทางการค้นหาของคุณ
ตัวอย่าง:
- 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
ผนวก System.KeywordSearchQuery เข้ากับ URL พื้นฐานของคุณ เนื่องจาก Copilot Studio จะเขียนคำค้นของผู้ใช้ใหม่โดยรวมบริบทของการสนทนาก่อนที่จะส่งคำขอค้นหา ขั้นตอนนี้มีความสำคัญในการรักษาบริบทในการสนทนาแบบหลายเทิร์น
เคล็ดลับ
แทนที่จะใช้คำขอ HTTP แบบโดยตรง คุณสามารถใช้วิธีใดก็ได้ที่ดึงผลลัพธ์จากจุดเชื่อมต่อสำหรับการค้นหา รวมถึงคอนเนคเตอร์แบบกำหนดเอง คอนเนคเตอร์ในตัว เช่น Azure AI Search หรือโฟลว์เอเจนต์
ตัวอย่างการเขียนคำค้นใหม่
- คำค้นของผู้ใช้ 1: "ระยะเวลาการเก็บข้อมูลอย่างเป็นทางการของเราสำหรับบันทึกลูกค้าคือเท่าไร"
- การสอบถามการติดตามผล: "ข้อมูลทางการเงินมีการเปลี่ยนแปลงหรือไม่"
- การสอบถามการติดตามผล: "และมีข้อยกเว้นหรือไม่"
คำค้นที่เขียนใหม่กลายเป็น: "ข้อยกเว้นเกี่ยวกับนโยบายการเก็บรักษาข้อมูล, ข้อยกเว้นการเก็บรักษาข้อมูลลูกค้าและข้อมูลทางการเงิน, ข้อยกเว้นตามข้อบังคับ, การจัดการข้อยกเว้นของนโยบาย, แนวทางการปฏิบัติตามข้อกำหนด"
โปรดสังเกตว่าคำค้นที่เขียนใหม่:
- แก้ไข "ที่นั่น" ให้กับนโยบายการเก็บข้อมูล
- นำบริบทจากทั้งสองเทิร์นก่อนหน้า: ข้อมูลลูกค้า + ข้อมูลทางการเงิน
- เพิ่มภาษานโยบายองค์กร: ข้อยกเว้น, การยกเว้น, กฎระเบียบ, แนวทางปฏิบัติ
ขั้นตอนที่ 3: แปลงผลลัพธ์:
แหล่งความรู้แบบกำหนดเองต้องส่งผลลัพธ์ในรูปแบบที่ Copilot Studio คาดหวัง รูปแบบนี้ใช้:
- เนื้อหา: ส่วนย่อยหรือข้อความสั้น ๆ ที่ตัดตอนมา
- ContentLocation (ไม่บังคับ): URL
- ชื่อเรื่อง (ไม่บังคับ): ชื่อของผลลัพธ์
เพื่อกำหนดโครงสร้างของการตอบสนอง HTTP ให้ตั้งค่าสคีมาของการตอบสนองในอินเทอร์เฟซ Copilot Studio
- เลือกจากข้อมูลตัวอย่างสำหรับชนิดข้อมูลของการตอบกลับ
- เลือกรับสคีมาจาก JSON ตัวอย่าง
- วางเพย์โหลด JSON ตัวอย่างของคุณเพื่อสร้างสคีมาโดยอัตโนมัติ
ขั้นตอนนี้จะสร้างสคีมาของการตอบกลับในไฟล์ YAML ของคุณ
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
ต่อไปนี้ ปรับผลลัพธ์ของ API ของคุณให้ตรงกับรูปแบบที่กำหนดนี้ กำหนดข้อมูลที่แปลงแล้วให้กับ System.SearchResults
ตัวอย่างการแปลง
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: {}
แอคชัน SetVariable จะดำเนินการทั้งสองอย่าง:
- ฟังก์ชัน
ForAllจะแปลงผลการค้นหาแต่ละรายการ โดยการแมปsnippetกับContent,urlกับContentLocationและtitleกับTitle - ตารางที่ได้รับการแปลงจะถูกกำหนดให้กับ
System.SearchResultsซึ่งเป็นตัวแปรที่ Copilot Studio ใช้ในการสร้างคำตอบ
ข้อควรพิจารณา
โปรดคำนึงถึงข้อควรพิจารณาที่สำคัญเหล่านี้เมื่อคุณสร้างแหล่งความรู้แบบกำหนดเอง
ขีดจำกัดผลลัพธ์
Copilot Studio ใช้ข้อมูลส่วนย่อยได้สูงสุด 15 รายการจาก System.SearchResults เพื่อสร้างการตอบ หาก API ของคุณแสดงผลลัพธ์เพิ่มเติม ให้พิจารณาสิ่งต่อไปนี้
- ดำเนินการให้คะแนนความเกี่ยวข้องเพื่อส่งคืนผลลัพธ์ที่ดีที่สุดก่อน
- จำกัดผลลัพธ์ของ API ให้มี 15 รายการ
- การเรียงลำดับผลลัพธ์ตามความเกี่ยวข้องก่อนการแปลง
หลายหัวข้อความรู้ที่กำหนดเอง
คุณสามารถสร้างหลายหัวข้อได้โดยใช้ OnKnowledgeRequested ซึ่งแต่ละหัวข้อสามารถสืบค้นระบบแบ็กเอนด์ที่แตกต่างกันได้ Copilot Studio เรียกใช้ทั้งหมดพร้อมกันเมื่อต้องการความรู้ แนวทางนี้ช่วยให้คุณสามารถสืบค้นจุดเชื่อมต่อการค้นหาต่าง ๆ หรือดำเนินกลยุทธ์สำรองได้
คำเตือน
ขีดจำกัดผลลัพธ์จะใช้กับหัวข้อความรู้ทั้งหมดรวมกัน หากหัวข้อ A ส่งกลับผลลัพธ์ 10 รายการ และหัวข้อ B ส่งกลับ 8 รายการ จะเลือกใช้เฉพาะผลลัพธ์ที่รวมกัน 15 อันดับแรกเท่านั้น
คำแนะนำ
- จัดเรียงหรือให้คะแนนผลลัพธ์ก่อนที่จะส่งคืน
- รักษาโครงสร้างการตอบกลับให้สอดคล้องกัน
- ใช้ชื่อหัวข้อและคำอธิบายที่ชัดเจน แนวทางปฏิบัตินี้เหมาะสำหรับกรณีที่ชุดผลลัพธ์ขนาดใหญ่จำเป็นต้องกรองความเกี่ยวข้อง