หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Copilot Studio ประกอบด้วยแหล่งความรู้ที่มีอยู่ภายในเช่น SharePoint และ Dataverse องค์กรหลายแห่งยังใช้จุดสิ้นสุดการค้นหาของตนเอง เช่น API แบบกําหนดเอง ระบบการค้นหาระดับองค์กรที่มีอยู่ หรือ Azure AI Search ขณะที่ยังคงสามารถควบคุมคิวรีได้เต็มรูปแบบ
Copilot Studio สนับสนุนสถานการณ์นี้ด้วยตัวกระตุ้น OnKnowledgeRequested หัวข้อใด ๆ ที่ใช้ทริกเกอร์นี้ทําหน้าที่เป็นแหล่งความรู้แบบกําหนดเองและส่งผลให้เกิดคําตอบที่สร้าง
บทความนี้อธิบายวิธีการสร้างและรวมแหล่งความรู้แบบกําหนดเองใน Copilot Studio โดยใช้ OnKnowledgeRequested ทริกเกอร์ คุณเรียนรู้วิธีการเขียนคิวรี่ Copilot Studio ใหม่ วิธีการเชื่อมต่อกับ API การค้นหาของคุณเอง วิธีการจัดรูปแบบผลลัพธ์สําหรับคําตอบที่สร้างและแนวทางปฏิบัติที่ดีที่สุดเมื่อทํางานกับความรู้แบบกําหนดเอง
ทริกเกอร์ OnKnowledgeRequested
ใช้ทริกเกอร์ OnKnowledgeRequested ในสถานการณ์ทั้งสองนี้:
- เมื่อ orchestrator กําหนดว่าจําเป็นต้องมีการเรียกข้อมูลความรู้เพื่อตอบคิวรีของผู้ใช้
- เมื่อมีการเรียกใช้โหนดคำตอบเชิงสร้างสรรค์อย่างชัดเจนในการสนทนา
Important
คุณสามารถกําหนดค่าทริกเกอร์นี้ ในมุมมองโค้ด เท่านั้นโดยใช้ 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 เขียนคิวรีผู้ใช้ใหม่โดยอัตโนมัติด้วยบริบทการสนทนาก่อนที่จะทําการร้องขอการค้นหา ขั้นตอนนี้เป็นสิ่งสําคัญในการรักษาบริบทในการสนทนาแบบหลายเลี้ยว
Tip
แทนที่จะเป็นคําขอ HTTP ดิบ คุณสามารถใช้วิธีการใด ๆ ที่รับผลลัพธ์จากจุดสิ้นสุดการค้นหา รวมถึงตัวเชื่อมต่อแบบกําหนดเอง ตัวเชื่อมต่อที่มีอยู่ภายใน เช่น Azure AI Search หรือโฟลว์ตัวแทน
ตัวอย่างการเขียนคิวรีใหม่
- คิวรีผู้ใช้ 1: "ระยะเวลาเก็บข้อมูลอย่างเป็นทางการของเราสําหรับบันทึกลูกค้าคืออะไร"
- คิวรีติดตามผล: "เปลี่ยนแปลงข้อมูลทางการเงินหรือไม่"
- คิวรีติดตามผล: "และมีข้อยกเว้นหรือไม่"
คิวรีที่เขียนใหม่จะกลายเป็น: "ข้อยกเว้นต่อนโยบายการเก็บข้อมูลของลูกค้าและการเก็บรักษาข้อมูลทางการเงินข้อยกเว้นนโยบายการยกเว้นการควบคุมการจัดการการปฏิบัติตามกฎระเบียบ"
โปรดสังเกตว่าคิวรีที่เขียนใหม่:
- แก้ไข "ที่นั่น" ให้กับนโยบายการเก็บข้อมูล
- ดึงบริบทไปข้างหน้าจากทั้งสองขั้นตอนก่อนหน้านี้: ข้อมูลลูกค้า + ข้อมูลทางการเงิน
- เพิ่มภาษานโยบายองค์กร: ข้อยกเว้น การยกเว้น กฎระเบียบ แนวทาง
ขั้นตอนที่ 3: แปลงผลลัพธ์
แหล่งความรู้แบบกําหนดเองต้องส่งออกผลลัพธ์ในรูปแบบที่ Copilot Studio คาดหวัง รูปแบบนี้ใช้:
- เนื้อหา: ส่วนย่อยหรือส่วนที่ตัดตอนมา
- ContentLocation (ไม่บังคับ): URL
- ชื่อเรื่อง (ไม่บังคับ): ชื่อเรื่องของผลลัพธ์
หากต้องการกําหนดโครงสร้างของการตอบสนองของ HTTP ให้กําหนดค่าเค้าร่างการตอบสนองในอินเทอร์เฟซผู้ใช้ Copilot Studio
- เลือก จากข้อมูลตัวอย่าง สําหรับชนิดข้อมูลการตอบกลับ
- เลือกรับ Schema จากตัวอย่าง JSON
- วางตัวอย่างส่วนข้อมูล JSON ของคุณเพื่อสร้าง schema โดยอัตโนมัติ
กระบวนการนี้สร้างเค้าร่างการตอบสนองในไฟล์ 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ไปยังContenturlเป็นContentLocationและ เป็นtitleTitle - ตารางที่ถูกแปลงจะถูกกําหนดให้กับ
System.SearchResultsซึ่งเป็นตัวแปรที่ Copilot Studio ใช้เพื่อสร้างคําตอบ
ข้อควรพิจารณา
โปรดคํานึงถึงข้อควรพิจารณาหลักเหล่านี้เมื่อคุณสร้างแหล่งข้อมูลความรู้แบบกําหนดเอง
ขีดจํากัดผลลัพธ์
Copilot Studio ใช้ส่วนย่อยสูงสุด 15 ชุดจาก System.SearchResults เพื่อสร้างการตอบสนอง ถ้า API ของคุณส่งกลับผลลัพธ์เพิ่มเติม ให้พิจารณา:
- ใช้การให้คะแนนความเกี่ยวข้องเพื่อส่งคืนผลลัพธ์ที่ดีที่สุดก่อน
- การจํากัดการตอบสนอง API ของคุณกับ 15 ผลลัพธ์
- เรียงลําดับผลลัพธ์ตามความเกี่ยวข้องก่อนการแปลง
หัวข้อความรู้แบบกําหนดเองได้หลายหัวข้อ
คุณสามารถสร้างหัวข้อได้หลายหัวข้อโดยใช้ OnKnowledgeRequestedและแต่ละหัวข้อสามารถคิวรีระบบ Backend ที่แตกต่างกันได้ Copilot Studio เรียกใช้ทั้งหมดพร้อมกันเมื่อจําเป็นต้องมีความรู้ วิธีนี้ช่วยให้คุณสามารถเรียกใช้จุดปลายทางของการค้นหาที่แตกต่างกันหรือใช้กลยุทธ์สำรอง
Warning
ขีดจํากัดผลลัพธ์ใช้กับหัวข้อความรู้ทั้งหมดรวมกัน ถ้าหัวข้อ A ส่งกลับผลลัพธ์ 10 รายการ และหัวข้อ B ส่งกลับ 8 ผลลัพธ์รวม 15 อันดับแรกเท่านั้นที่จะถูกใช้
คำแนะนำ
- เรียงลําดับหรือให้คะแนนผลลัพธ์ก่อนที่จะส่งกลับผลลัพธ์
- ทําให้รูปแบบการตอบกลับสอดคล้องกัน
- ใช้ชื่อหัวข้อและคำอธิบายที่ชัดเจน แนวทางปฏิบัตินี้จะเป็นประโยชน์เมื่อชุดผลลัพธ์ขนาดใหญ่ต้องการการกรองความเกี่ยวข้อง